检查以下简单代码:
#include <iostream>
class A
{
long *context;
public:
A(long i)
{
context = new long;
*context = i;
}
long& getContext()
{
return *context;
}
};
A a(1234);
int main(void)
{
auto v = a.getContext();
std::cout << v << std::endl;
return 0;
}
A::getContext()
的返回值是引用,auto
变量v
的类型是long
,而不是long&
:
....
auto v = a.getContext();
....
如果v
的类型被引用,那么缺陷是什么?