返回信息流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();
}
这是一条镜像帖。来源:北邮人论坛 / cpp / #85537同步于 2015/1/31
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
疑惑 求解;
pingguokaile
2015/1/31镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
还有 void main()
{
int a=1;
const int b=a;//这里有无const结果都一样,那么什么时候采用const呢?
a=2;
cout<<b<<endl;
}
因为你的复制构造函数里没有赋值的语句,所以a当然是个随机值
A obj=OBJ; 这一句的作用 和 A obj(OBJ) 是等价的
下面那个不是随机值是因为执行的是赋值操作,你没有定义赋值操作编译器就会为你合成一个,自动给每个成员变量赋值。
如果你自己定义一个 赋值操作符但没有赋值操作,比如:
A& A::operator=(const A &rhs)
{
cout << "赋值" << endl;
return *this;
}
那结果也是随机值
【 在 pingguokaile 的大作中提到: 】
: class A
: {public:
: int a;
: ...................
楼主学学Python吧。看,多么直观,多么简单: