zoukankan      html  css  js  c++  java
  • C++前置++与后置++的区别与重载

    ++属于单目运算符,前置与后置的实现代码不一样,下面以整数自增为例:

    // 前置++,返回自增后的值,且返回的是一个左值
    int& operator++(){
    	*this += 1;
    	return *this;
    } 
    
    // 后置++,返回自增前的值,且返回的是一个右值
    const int operator++(int){
    	int temp(*this);
    	*this += 1;
    	return temp;
    }
    

    1、返回值以及返回类型的区别示例如下:

    int a = 0, b = 0;
    cout << a++ << " " << ++b << endl; // 输出 0 1
    a++ = 9;         // 错误,不能对右值类型赋值
    ++b = 2;         // 正确,b = 2
    int c = ++b = 9; // 正确,b = 9,c = 9
    

    2、自定义类重载前置++与后置++,如下例重载链表节点:

    class Node{
    public:
    	Node():val(0), next(NULL){}
    	
    	// 重载前置++,若next为空,则不自增且返回自己
    	Node& operator++(){
    		if(next == NULL){
    			return *this;
    		}
    		val = next->val;
    		next = next->next;
    		return *this;
    	} 
    	
    	// 后置++,若next为空,则不自增
    	const Node operator++(int){
    		if(next == NULL){
    			return *this;
    		}
    		Node temp = *this;
    		val = next->val;
    		next = next->next;
    		return temp;
    	}
    public:
    	int val;
    	Node *next;
    };
    
  • 相关阅读:
    4.8日学习
    Apache安装
    HTML5 review
    个人阅读作业LAST
    个人阅读作业Week7
    结对编程:界面模块总结
    个人博客作业Week3
    结对编程博客
    个人博客week2
    软工第一次作业简单总结
  • 原文地址:https://www.cnblogs.com/avota/p/5248744.html
Copyright © 2011-2022 走看看