在C++中为类定义运算符赋值时,我注意到您不需要返回* this。我在Visual Studio 2012,Visual Studio 2010中测试了这个警告级别为4,并且没有错误或警告,并且代码按预期工作。但在Visual Studio 2008中,我收到了一个编译时错误,说'操作符=必须返回一个值'。C++赋值运算符默认返回
我的问题是:是这样的“功能”除了核心的C++语言,或者是它的东西是,森林狼队决定在添加
,如果这已问我道歉或有信息。这在线上,我无法找到任何答案。
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;
您是否有示例? – 0x499602D2
你有'singleton&'作为返回值,但不返回任何内容。 – Rapptz
@Rapptz我知道,但它似乎是合法的VS2012即使有警告级别4 – user2574802