CA &operator=(CA &t);赋值函数中,去掉“&”后,为什么S2的资源空间丢失了

2024-11-30 01:38:45
推荐回答(2个)
回答1:

因为重载=运算符就是等价于重载一个函数,参数是两个类的对象;
这样两个都加了&就是使用引用,没加& 就是值传递,编译器会建立类的副本,修改的就是副本的值,不会修改参数的值。这里会发生一个问题,那就是副本里的指针与参数的指针指向的地址相同,这就导致函数结束时,编译器会调用副本的析构函数,这就导致参数里的指针指向的地址是错误的!字符串已经不存在了!
懂了么……不懂再问!

回答2:

去掉哪个&