#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/07/31 04:09:21
![#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](/uploads/image/z/11769637-13-7.jpg?t=%23include+class+Sample+%7B+int+x%3B+public%3ASample%28%29%7B%7D%3B+Sample%28int+a%29%7Bx%3Da%3B%7D+Sample%28Sample+%26a%E4%B8%BA%E4%BB%80%E4%B9%88%E8%BE%93%E5%87%BA%E6%98%AFX%3D3X%3D12%E5%90%8E%E8%BE%B9%E7%9A%84%E4%B8%8D%E6%98%AF2%2B1%2B10%3D13%E5%91%A2%3F%E5%85%A8%E7%A8%8B%E5%BA%8F%E6%98%AF%E8%BF%99%E6%A0%B7%23includeclass+Sample%7Bint+x%3Bpublic%3ASample%28%29%7B%7D%3BSample%28int+a%29%7Bx%3Da%3B%7DSample%28Sample+%26a%29%7Bx%3Da.x%2B%2B+%2B10)
#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的区别.