我有一个类层次结构,我想禁止这样做:
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。