C++11新标准下,可以通过将拷贝构造函数和拷贝赋值运算符定义为删除的函数(deleted function)来阻止拷贝。
删除的函数是这样一种函数:我们虽然声明了他们,但是不能以任何形式使用他们。
通过在参数列表后面加上=delete来指出。
程序:
/***********************/
// @file nocopy.cc
// @author lesliefish(yuleics@126.com)
/***********************/
struct NoCopy
{
NoCopy() = default; //使用合成的默认构造函数
NoCopy(const NoCopy&) = delete; //阻止拷贝
NoCopy & operator = (const NoCopy&) = delete; //阻止赋值
~NoCopy() = default;