不带复制构造函数的C++赋值运算符

Ala*_*ing 2 c++ qt copy-constructor assignment-operator qobject

问题:我可以定义赋值运算符而不是复制构造函数吗?对于内部类(未在API中公开),这仍然是一个糟糕的设计实践吗?

我需要它的原因:正如这个问题提到的那样,QObject使其复制构造函数和赋值运算符成为私有,这样如果子类尝试使用其中任何一个,则在编译时发出错误.

我需要以复制"价值",然而定义赋值运算符(而不是"身份"作为Qobject文档描述,我不随地使用这个类的拷贝构造函数.

我不想编写复制构造函数的原因是它将复制我不会使用的代码.

Pup*_*ppy 9

什么都没有阻止你.然而,这是一个非常愚蠢的想法.

T t = GetSomeT();
Run Code Online (Sandbox Code Playgroud)

T t;
t = GetSomeT();
Run Code Online (Sandbox Code Playgroud)

把第一个变成第二个变得非常微不足道,但是你只是浪费我的时间,开发和处理器,让我做到这一点.如果它不是默认构造的,我想它会更难......但我仍然没有看到这一点.复制构造函数可以由编译器定义,如果它是微不足道的,或者如果你想要DRY,你甚至可以根据赋值运算符来定义它.

class T {
    T(const T& ref) {
         *this = ref;
    }
};
Run Code Online (Sandbox Code Playgroud)

没有复制构造函数也会抑制你的复制和交换能力,这是实现赋值运算符的常用习惯.