我有一个类层次结构,我想禁止这样做:
Foo *f = new Foo();
Bar *b = new Bar();
f = b;
Foo
的超类在哪里Bar
。这样做会切开Bar
对象的一部分。我知道您可以通过将operator=
其设为私有来解决此问题,但是是否可以仅禁止使用不同类型的赋值运算符?
就像operator=
私有化但仍然允许这样做:
Bar *b1 = new Bar();
Bar *b2 = new Bar();
b1 = b2;
假设子类也将被制作Bar
。