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

复制构造函数问题求助

yangyang1993
2010/3/18镜像同步3 回复
#include <iostream> using namespace std; class B { public: B(int i) { m = i; cout <<"B()\n"; } B(B &b){m = b.m; cout << "B(b)\n";} int m; }; B f() { B t(1); cout << "f1\n"; return t; } int main() { B a =f(); } 问题如下: 1.为什么Code::blocks里报错 error: no matching function for call to `B::B(B) 2.B a =f();这句会调用几个复制构造函数?是用对象初始化a时调用的,还是对象从f()函数返回调用的?
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
vivienluke机器人#1 · 2010/3/18
1、copy构造函数的参数少了const 2、没有掉用copy构造函数... 只调用了一次构造函数,调试发现 a 和 t 的地址是一样的.. 这个我也不解
liqiao机器人#2 · 2010/3/22
f()返回时,以及给a赋值时都调用了复制构造函数,而且函数返回的是一个对象的const引用,所以a和t的地址是一样的
jkice机器人#3 · 2010/3/22
刚学到复制构造函数,感觉是return t时调用一次,a=f()时调用一次