永发信息网

c++的构造函数

答案:3  悬赏:60  手机版
解决时间 2021-04-24 17:13
  • 提问者网友:疯子也有疯子的情调
  • 2021-04-24 12:30

在定义类对象r1,r2,然后把r1=r2;再改变r2中的值,为什么r1的值也改变了

最佳答案
  • 五星知识达人网友:野味小生
  • 2021-04-24 13:17

在面向对象的编程语言中,=实际上是已经被重载过的。


在C++里面有个模板库,里面的很多运算符都是被重载过的,=也不例外


所以可以用一个对象直接初始化另一个对象,对C++而言就是调用了其默认


的拷贝构造函数,同构造函数一样,如果没有重新编写,那么就会采用默认构造函数


但是由于默认构造函数产生的对象值和赋值对象在同一区域,故而一般提倡自己编写,因为


当我们用指针来释放空间时避免释放错误。

全部回答
  • 1楼网友:过活
  • 2021-04-24 14:52

在你定义的类里重载一下“=”号运算符就不会出现这样的情况

  • 2楼网友:长青诗
  • 2021-04-24 14:46

如果该类里有static变量的话,所有对象都共享同样的一份static变量,你改变r2, r1里的该static变量也会改变

如果r1是r2的引用的话, 改变r2的值r1也会改变..

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯