为什么要使赋值运算符为虚拟?
赋值运算符本身并不需要在 C 中是虚拟的。但是,在涉及派生类的某些场景中,将其设为虚拟可能会很有用。
其他运算符可以设为虚拟吗?
是的,原则上,任何接受的运算符都可以有问题的类型可以设为虚拟,包括算术和逻辑运算符。
详细说明
虚拟函数和参数继承:
虚拟函数旨在允许派生类覆盖具有相同签名的基类函数。但是virtual关键字没有考虑参数的继承。因此,即使赋值运算符被设为虚拟,如果派生类的赋值运算符具有不同的参数类型,则调用的行为也不会像虚拟函数一样。
默认值和重载运算符:
相反,您可以定义一个虚函数来在分配给基类变量时为派生类设置默认值。即使基类变量实际上存储的是派生类对象,这也是可能的。通过重写基类赋值运算符,您可以为派生类属性指定默认值。
使用 RTTI 进行正确的赋值处理:
在存在的情况下正确处理赋值对于派生类,您可以利用运行时类型信息 (RTTI)。使用dynamic_cast,您可以检查正在分配的对象的动态类型并相应地处理分配。这可确保调用正确的派生类赋值运算符并正确初始化所有属性。
以上是C 中的赋值运算符应该是虚拟的吗?的详细内容。更多信息请关注PHP中文网其他相关文章!