我现在正在学习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/