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

Which operators in C++ won't be inherited except assignment operator?

本文关键字:运算符 继承 赋值运算符 C++      更新时间:2023-10-16

我很难理解这一点:

众所周知,赋值运算符不会直接继承。。。我昨天问过这个链接

AFAIK以下非虚拟运营商也不会被继承:

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

所有其他操作符都将被继承(如果我错了,请纠正我)

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

严格来说,一切都是继承的。但是,以下内容将被隐式声明的版本(或用户声明的版本,如果用户声明了它们)隐藏在派生类中:

  • 默认构造函数:T()
  • 析构函数:~T()
  • 复制构造函数:T(T const &)(有时没有const
  • 复制分配运算符:T & operator=(T const &)(有时没有const
  • 移动构造函数:T(T &&)
  • 移动分配运算符:T & operator=(T &&)

CCD_ 9和CCD_。virtual声明没有区别。

赋值运算符由派生类继承,但是赋值运算符的派生类版本隐藏基类版本

所有其他操作员也是如此。

virtual关键字应用于方法时,意味着如果子类选择覆盖,则子类可以选择覆盖。如果不覆盖,则在子类上调用方法时执行超类行为。

如果虚拟方法是纯的,那么需要子类来覆盖它。它们没有可以依赖的默认行为。

我读过《C++思维》一书,在第14章中提到了

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