zoukankan      html  css  js  c++  java
  • 第十八章 25重载自加运算符的执行次序 简单

    // 25重载自加运算符的执行次序
    /*
    #include <iostream>
    using namespace std;
    class A
    {
    public:
    	A(int n){ rx=n;}
    	friend ostream&operator<<(ostream&s, const A&c){
    		s<<c.rx<<endl;
    		return s;
    	}
    	//前置运算符
    	int operator++(){ cout<<"++i"<<endl; rx++; return rx; }
    	//后置自加
    	int operator++(int){ cout<<"++i"<<endl; int i= rx; rx++; return i; }
    private:
    	int rx;
    };
    int main()
    {
    	 A a(3);
    	 //cout<<a++<<++a<<endl; //这样输出55是正常的
    	 cout<<++a<<a++<<endl; //这样输出的是5 3  
    	 //给两个函数增加功能,前置自加就是先自加,然后返回自加后的值
    	 //后置自加与其相反,需要先将rx的值返回,然后再自加
    
    	 //后置自加运算符函数operator++(int)调用在先,
    	 //前置自加运算符函数operator++()调用在后,输出的数值更中令人迷糊了,先车出5.然后输出3这是为什么
    	 //这是因为当给一个函数传进来的参数不是一个简单的变量,而是一个有运算的表达式时,可能发生先把所有的表达式求值,再进行参数压栈的情况,也有可能是一边求值一边压栈,求出一个压一个,不同的编译器做法不尽相同
    	 //首先将参数的值求出,然后再压栈,由于在无括号的情况下,求参数的值的顺序是从右到左的,因此首先求最右侧的参数a++;
    
    
         return 0;
    }*/
    

      

  • 相关阅读:
    ORACLE分页SQL语句
    oracle中主键自增
    html5video初试牛刀api
    如何修改tomcat的端口号
    用Java来获取访问者真实的IP地址
    根据txt文件处理的方法总结
    CXF 做 webservice 简单例子demo
    java创建TXT文件并进行读、写、修改操作
    POJ1047 Round and Round We Go
    NYOJ305 表达式求值
  • 原文地址:https://www.cnblogs.com/xiangxiaodong/p/2700755.html
Copyright © 2011-2022 走看看