在C++中如果要求一个类能被复制需要实现赋值运算符或者复制构造函数,因此要想一个类不能被复杂,只需将这两个函数设置private访问属性即可
nocopy.cpp:7: error: 'NoCopy& NoCopy::operator=(const NoCopy&)' is private
class NoCopy{
public:
NoCopy(){}
private :
NoCopy(const NoCopy & copy){}
NoCopy & operator = (const NoCopy & copy){}
};
int main()
{
NoCopy a;
NoCopy b;
b = a;
return 0;
}
lab623c@lab623c-desktop:~/lemon$ g++ nocopy.cpp -o nocopy
nocopy.cpp: In function 'int main()':nocopy.cpp:7: error: 'NoCopy& NoCopy::operator=(const NoCopy&)' is private
nocopy.cpp:14: error: within this context
因此类NoCopy是不能被复制的