// Task.h
class Task
{
public:
Task() = default;
Task(const Task &) = delete;
~Task() = default;
Task(Task &&) = default;
const Task & operator= (const Task &) = default;
};
/main.cpp
#include <iostream>
#include "Task.h"
int main()
{
Task t;
std::cout<<"hello world"<<std::endl;
return 0;
}
我在Mac OS上编写c ++代码。当我编译上面的代码:g++ main.cpp
时,我得到如下错误:
错误:显式默认的复制赋值运算符必须返回&#39;任务 &安培;&#39;
我根本不懂。 operator=
只能在这里返回非const引用吗?我在Windows中执行了相同的代码,它没有任何错误。那么Mac OS有一些特殊的c ++标准吗?
答案 0 :(得分:0)
问题在于我使用= default
http://en.cppreference.com/w/cpp/language/copy_assignment
如果使用= default
,则返回类型必须是非const引用。如果我们这样编码:const Task & operator= (const Task &t){}
,它的工作没有任何错误。