如果我在C++中将一个基本类型与一个更派生的类型进行比较,
例如:
operator==
是否只应该比较基本类型部分,还是如果传递了更派生的类型,它应该返回false?例如:
BaseType myBase("a", "b");
DerivedType myDerived("a", "b", "c");
myDerived == myBase // This should return false, right ?
myBase == myDerived // Should this return false as well ? How can the BaseType operator know that it's parameter is derived ?
我认为这两个语句都应该返回false,但我不确定如何实现基本类型的operator==
。
BaseType
运算符无法从DerivedType
检查任何内容,因为通常基类不知道可能的派生类。当然,除非您使用正确的参数将运算符实现为独立函数来处理两种类型。 - Some programmer dude