作业帮 > 综合 > 作业

#include class Sample { int x; public:Sample(){}; Sample(int

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/07/09 05:36:05
#include class Sample { int x; public:Sample(){}; Sample(int a){x=a;} Sample(Sample &a
为什么输出是X=3
X=12
后边的不是2+1+10=13呢?
全程序是这样
#include
class Sample
{
int x;
public:
Sample(){};
Sample(int a){x=a;}
Sample(Sample &a){x=a.x++ +10;}
void disp(){cout
S1(2),因为2是int,所以此时调用Sample(int a){x=a;}
该x = 2;
执行s2(s1),调用Sample(Sample &a){x=a.x++ +10;}
因为参数是引用,所以表达式中a.x++所以 S1里面的X值变为3
但是S2里的X值:2 + 10 = 12;
问道为什么 因为a.x++ 是先执行后加1.如果是++a.x那么就是先+1后执行表达式.
如果还是不理解,那么建议去查看下C语言或C++书籍.i++与++i的区别.