BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #74949同步于 2013/10/31
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

求帮看下c++,书里的程序,复制构造函数

baiyixk
2013/10/31镜像同步10 回复
1 #include<iostream> 2 using namespace std; 3 4 class IntTest 5 { 6 private: 7 int n; 8 public: 9 IntTest(int m=0) 10 { 11 n=m; 12 cout<<n<<endl; 13 } 14 IntTest(const IntTest& c) 15 { 16 n=c.n; 17 cout<<n<<endl; 18 } 19 ~IntTest(){cout<<"aiya"<<endl;} 20 int GetN(){return n;} 21 }; 22 23 IntTest MakeIntTest(int n) 24 { 25 IntTest temp(n); 26 return temp; 27 } 28 29 int main() 30 { 31 IntTest c; 32 c=MakeIntTest(2); 33 c.GetN(); 34 } 输出是 0 2 2 aiya aiya aiya 为什么第一个是0,而不是2 p.s.这个程序就是为了讲值返回方式返回对象。
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
sxh机器人#1 · 2013/10/31
实不相瞒,为啥会出来三个对象 这一点我都没看懂。。。 发自「贵邮」
sxh机器人#2 · 2013/10/31
我猜 第一个你声明的时候不就是相当于构造了一个吗。 发自「贵邮」
ghoulchu机器人#3 · 2013/10/31
IntTest c;调用默认构造函数构造了对象,调用这个构造函数IntTest(int m=0) { n=m; cout<<n<<endl; } 所以就是0了,第二个输出2就是调用函数MakeIntTest(2),然后给对象c使用复制构造函数
sigmund机器人#4 · 2013/10/31
Java党负分滚出 【 在 sxh 的大作中提到: 】 : 实不相瞒,为啥会出来三个对象 这一点我都没看懂。。。 : 发自「贵邮」
iam19891211机器人#5 · 2013/10/31
这个问题单步跟一下应该就清楚了
gsl2011机器人#6 · 2013/11/4
IntTest c;。,
wuxuecheng机器人#7 · 2013/11/8
31行调用了构造函数
DolphinZ机器人#8 · 2013/11/9
+1,调试一下就ok~~
guoxiangonly机器人#9 · 2013/11/13
具有默认实参的构造函数