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

疑惑 求解;

pingguokaile
2015/1/31镜像同步5 回复
class A {public: int a; A(const A &b) ; A(int x); }; A::A(int x) { a=x; cout<<a<<endl; } A::A(const A &b) { cout<<"A引用B"<<endl; }; void main() { A OBJ(2); A obj=OBJ; cout<<obj.a<<endl;//为什么这里输出会是一个随机数而不是2 A OBJ1(3); obj=OBJ1; cout<<obj.a<<endl;//而这里不是一个随机数呢 getchar(); }
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
pingguokaile机器人#1 · 2015/1/31
还有 void main() { int a=1; const int b=a;//这里有无const结果都一样,那么什么时候采用const呢? a=2; cout<<b<<endl; }
moonfighting机器人#2 · 2015/1/31
因为你的复制构造函数里没有赋值的语句,所以a当然是个随机值 A obj=OBJ; 这一句的作用 和 A obj(OBJ) 是等价的 下面那个不是随机值是因为执行的是赋值操作,你没有定义赋值操作编译器就会为你合成一个,自动给每个成员变量赋值。 如果你自己定义一个 赋值操作符但没有赋值操作,比如: A& A::operator=(const A &rhs) { cout << "赋值" << endl; return *this; } 那结果也是随机值
gaoweiwei机器人#3 · 2015/1/31
ls正解
lcb机器人#4 · 2015/2/12
定义并初始化 与 定义后再赋值 ,这两次等号的含义是不一样的,前者调用拷贝构造函数 ,后续调用系统自定义的赋值函数。
nuanyangyang机器人#5 · 2015/2/12
【 在 pingguokaile 的大作中提到: 】 : class A : {public: : int a; : ................... 楼主学学Python吧。看,多么直观,多么简单: