我有以下代码:
template<typename T>
class derClass : public baseClass<column<T>, column<k>>
{
//prohibit value semantics
derClass(const derClass&) = delete;
derClass& operator= (const derClass&) = delete;
public:
...
}
此代码有很多地方我不理解:
这些
delete
是什么意思?我没有看到delete
变量的任何声明。为什么我们需要一个以相同类的对象作为参数的构造函数?
这整行是什么意思:
derClass& operator= (const derClass&) = delete;
最佳答案
这里的delete
是new C++11 thing,并告诉编译器这些方法不存在。否则,编译器将创建它们的默认版本。
对其类进行常量引用的构造函数是复制构造函数。复制构造函数的用途应在任何有关C ++的初学者中进行解释。
由于现在删除了复制构造函数和复制分配运算符,这意味着您无法从derClass
的另一个实例创建derClass
的实例。
关于c++ - 在C++中禁止值语义是什么意思?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18329747/