c++ - 返回常量引用

标签 c++ operator-overloading

我现在正在学习C++。我正在尝试从 this link 研究它.在第 10 章中,当我研究运算符重载时,在示例程序中“*this”作为常量引用返回。 Here it is

在此程序中,我们使用“*this”取消引用当前对象,返回值意味着当前 Counter 对象作为常量引用。

所以当我这样做时:

Counter a = ++i;

当前对象是否分配给常量引用并且常量引用的值被复制到使用默认复制构造函数创建的新对象?

最佳答案

当你写作时

Counter a = ++i;

您只是从函数返回的 const Counter & 进行复制。你所做的等同于(从 a 的角度来看):

const Counter & ref = ++i;
Counter a = ref;

只要你将a定义为一个Counter对象,它就会被创建为一个全新的Counter对象(或者你会如果复制构造函数不可访问,则会出现编译器错误。

关于c++ - 返回常量引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10060897/

相关文章:

c++ - 为什么不同结构体输出的size是一样的?

c++ - 重载 = 行为类似于矩阵的类的运算符

Swift SKPhysicsBody 碰撞问题

C++ 重载 > 对于priority_queue(最小堆): yields "invalid operands to binary expression (' const Node' and 'const Node' )"on push() for heap

c++ - 返回 *this

java - 为什么Java中Integer对象的计数速度比int慢

C++ Curl 添加和发送 cookie

c++ - 所有的模板实例都是在编译时创建的吗?

c++ - Friend 函数,期望 Primary Expression before 。 token

c++ - 对 'boost::system::system_category()' 的 undefined reference