#include class Sample { int x; public:Sample(){}; Sample(int a){x=a;} Sample(Sample &a为什么输出是X=3X=12后边的不是2+1+10=13呢?全程序是这样#includeclass Sample{int x;public:Sample(){};Sample(int a){x=a;}Sample(Sample &a){x=a.x++ +10

来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/23 07:42:28
#includeclassSample{intx;public:Sample(){};Sample(inta){x=a;}Sample(Sample&a为什么输出是X=3X=12后边的不是2+1+10

#include class Sample { int x; public:Sample(){}; Sample(int a){x=a;} Sample(Sample &a为什么输出是X=3X=12后边的不是2+1+10=13呢?全程序是这样#includeclass Sample{int x;public:Sample(){};Sample(int a){x=a;}Sample(Sample &a){x=a.x++ +10
#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

#include class Sample { int x; public:Sample(){}; Sample(int a){x=a;} Sample(Sample &a为什么输出是X=3X=12后边的不是2+1+10=13呢?全程序是这样#includeclass Sample{int x;public:Sample(){};Sample(int a){x=a;}Sample(Sample &a){x=a.x++ +10
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的区别.