2 w810443616 w810443616 于 2014.11.27 21:36 提问

关于c++浅复制的问题,求指教
c++

class A{
private:
char name[10];
public:
A(char name[])
{
strcpy(this->name,name);
}
void set(char name[])
{
strcpy(this->name,name);
}
void display()
{
cout<<name<<endl;
}
};
void main(){
A a("a");
A b=a;
a.set("b");
b.display();
a.display();
}
这个b对象属于直接浅复制对象a的,书上说这是现在两个对象指向同一内存地址,为什么我再次修改了a对象的数据成员b的数据成员没有改变呢?

4个回答

qq1134993111
qq1134993111   2014.11.27 21:59
已采纳

指向的不是同一个地址,如果用指针就是同一个地址了!
你看的什么书啊,太不靠谱了!

w810443616
w810443616 醉了。。。教材直接把我带沟里了。。。我明白了。。。
3 年多之前 回复
oyt123
oyt123   2014.11.27 22:05

class A{
private:
char *name; //char name[10];
用的时候,记得分配内存

w810443616
w810443616 谢谢 我明白了。。。
3 年多之前 回复
bdmh
bdmh   Ds   Rxr 2014.11.28 11:17

A a("a");
A* b=&a;
a.set("b");
b->display();
a.display();

这样写就一致了

zhao4zhong1
zhao4zhong1   Rxr 2014.12.01 16:56

在VS IDE中调试时按Alt+8单步类的实例“构造”或“复制”或“作为函数参数”或“作为函数返回值返回”或“参加各种运算”或“退出作用域”的语句对应的汇编代码几步后,就会来到该类的“构造函数”或“复制构造函数”或“运算符重载”或“析构函数”对应的C/C++源代码处。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!