我很难理解这一点:
众所周知,赋值运算符不会直接继承...我昨天已经问过LINK
非虚拟运算符之后的AFAIK也不会被继承:
operator& //unary user defined
operator* //unary user defined
所有其他运营商都将被继承(如果我错了,请纠正我)
哪些虚拟运营商不会被继承? (虚拟说明符会有什么不同吗?)
答案 0 :(得分:4)
Assived运算符由Derived类继承,但Assignment运算符的派生类版本 hides 基类版本。
与所有其他运营商的情况相同。
答案 1 :(得分:4)
严格地说,一切都是继承的。但是,以下将通过隐式声明的版本(或用户声明的版本,如果用户声明它们)在派生类中隐藏:
T()
~T()
T(T const &)
(有时没有const
)T & operator=(T const &)
(有时没有const
)T(T &&)
T & operator=(T &&)
operator&
和operator*
会像其他所有内容一样继承。 virtual
声明没有任何区别。
答案 2 :(得分:0)
虚拟关键字应用于方法时,意味着如果子类选择,则子类可以选择覆盖。如果不这样做,则在子类上调用方法时会执行超类行为。
如果虚方法是纯的,则需要子类来覆盖它。没有他们可以依赖的默认行为。
答案 3 :(得分:0)
我已经阅读了C ++中的Book Thinking,在第14章中提到了以下几行
除了赋值运算符,运算符是自动的 继承到派生类。