问题描述
- 关于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的数据成员没有改变呢?
解决方案
指向的不是同一个地址,如果用指针就是同一个地址了!
你看的什么书啊,太不靠谱了!
解决方案二:
class A{
private:
char *name; //char name[10];
用的时候,记得分配内存
解决方案三:
A a("a");
A* b=&a;
a.set("b");
b->display();
a.display();
这样写就一致了
解决方案四:
在VS IDE中调试时按Alt+8单步类的实例“构造”或“复制”或“作为函数参数”或“作为函数返回值返回”或“参加各种运算”或“退出作用域”的语句对应的汇编代码几步后,就会来到该类的“构造函数”或“复制构造函数”或“运算符重载”或“析构函数”对应的C/C++源代码处。
时间: 2024-11-10 07:39:03