在 C++ 中为类定义运算符分配时,我注意到您不需要返回 *this。我在 Visual Studio 2012、Visual Studio 2010 上进行了测试,警告级别为 4,没有错误或警告,代码按预期工作。然而,在 Visual Studio 2008 中,我收到一个编译时错误,提示“operator= must return a value”。
我的问题是:这个“功能”是核心 C++ 语言的一部分,还是 VS 团队决定添加的东西。
如果有人问过这个问题或者网上有关于这个的信息,我很抱歉,我找不到任何答案。
template <typename T>
struct singleton
{
T value;
singleton(const singleton& x) : value(x.value) {}
singleton() {}
~singleton() {}
singleton& operator=(const singleton& x) { value = x.value; }
};
这是我用于测试的代码:
singleton<float> sf;
sf.value = 1.9f;
singleton<float> sf2 = sf;
std::cout << sf2.value << std::endl;