我目前正在学习C++的基础知识,我发现了以下代码:
#include <iostream>
using namespace std;
class MyClass {
int x;
public:
MyClass(int val) : x(val) {}
int& get() {return x;}
};
int main() {
MyClass foo (10);
foo.get() = 15;
cout << foo.get() << '\n';
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我不明白为什么这条线foo.get() = 15有效.对我来说,它看起来像是一个同时获得和设置.我想这是有效的,因为返回类型int&不仅仅是int.
有人可以向我解释它是如何工作的吗?
谢谢.
您foo.get将返回对(注明)的引用.intint&
可以指定引用(因此它们是l值).阅读关于C++参考的wikipage ,它比我有时间更好地解释.或仔细阅读一本好的C++编程书,例如Stroustrup的编程:使用C++的原理和实践或C++ 之旅或C++编程语言(或所有这些)!
正如Neil Kirk评论的那样,你几乎可以看到引用被隐式地取消引用.换句话说,如果你熟悉C,想想int* get() { return &x; }和*foo.get() = 15;
另请参阅此参考与指针问题