问题描述
- 写了个c++类的成员函数,返回引用
-
test & test::count_price(const test &a){ price+=a.price; return *this; }
原本想写成这样:
test &c=a.count_price(b);//获取a的引用
结果意外写成:
test c=a.count_price(b);
编译也能通过,问题就来了,为什么这样做可以呢?引用的实质是什么呢?
解决方案
你不理解的是因为:引用返回后调用拷贝构造函数生成了对象c
另一个就是正常的引用赋值。
解决方案二:
并不是生成了对象C,而是拷贝构造产生的临时对象赋值给了c.
解决方案三:
并不是生成了对象C,而是拷贝构造产生的临时对象赋值给了c.
时间: 2024-08-03 15:24:32