除了赋值运算符之外,C ++中的哪些运算符不会被继承?

时间:2012-01-15 14:36:00

标签: c++ operators

我很难理解这一点:

众所周知,赋值运算符不会直接继承...我昨天已经问过LINK

非虚拟运算符之后的AFAIK也不会被继承:

operator&  //unary user defined
operator* //unary user defined

所有其他运营商都将被继承(如果我错了,请纠正我)

哪些虚拟运营商不会被继承? (虚拟说明符会有什么不同吗?)

4 个答案:

答案 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章中提到了以下几行

除了赋值运算符,运算符是自动的 继承到派生类。