Ala*_*ing 2 c++ qt copy-constructor assignment-operator qobject
问题:我可以定义赋值运算符而不是复制构造函数吗?对于内部类(未在API中公开),这仍然是一个糟糕的设计实践吗?
我需要它的原因:正如这个问题提到的那样,QObject使其复制构造函数和赋值运算符成为私有,这样如果子类尝试使用其中任何一个,则在编译时发出错误.
我需要以复制"价值",然而定义赋值运算符(而不是"身份"作为该Qobject文档描述,我不随地使用这个类的拷贝构造函数.
我不想编写复制构造函数的原因是它将复制我不会使用的代码.
什么都没有阻止你.然而,这是一个非常愚蠢的想法.
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)
没有复制构造函数也会抑制你的复制和交换能力,这是实现赋值运算符的常用习惯.
| 归档时间: |
|
| 查看次数: |
2119 次 |
| 最近记录: |