我有以下代码:

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;

最佳答案

这里的deletenew C++11 thing,并告诉编译器这些方法不存在。否则,编译器将创建它们的默认版本。

对其类进行常量引用的构造函数是复制构造函数。复制构造函数的用途应在任何有关C ++的初学者中进行解释。

由于现在删除了复制构造函数和复制分配运算符,这意味着您无法从derClass的另一个实例创建derClass的实例。

关于c++ - 在C++中禁止值语义是什么意思?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18329747/

10-12 02:06