C++中,对象之间可以进行赋值。“类的数据成员中不能包括动态分配的数据,否则在赋值时可能出现严重后
答案:2 悬赏:0 手机版
解决时间 2021-03-22 18:56
- 提问者网友:我一贱你就笑
- 2021-03-22 12:02
C++中,对象之间可以进行赋值。“类的数据成员中不能包括动态分配的数据,否则在赋值时可能出现严重后果”为什么会出现严重后果呢?这个严重后果又是什么呢?求解!!!
最佳答案
- 五星知识达人网友:不甚了了
- 2021-03-22 13:27
对象的拷贝构造属于位拷贝。就是说,拷贝后,新对象中用于分配堆内存的指针或引用变量和原有的对象具有相同的二进制地址,一旦原对象释放该段内存,新对象将操作无效内存,最终导致程序崩溃。
全部回答
- 1楼网友:长青诗
- 2021-03-22 14:40
lz说的问题本质是,如果某个类的对象a里面有动态申请的数据,当你把a直接复制给同一个类的对象b的时候,a中的动态指针也给了b,这样a,b中的指针指向同一块内存.这样无论a或者b释放内存都会导致另外一个访内违例崩溃.
解决这个问题需要自己重载赋值运算符和拷贝构造函数.如果不想重载,并且也不喜欢出现错误,那么就把这两类函数声明为私有
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯