除了赋值运算符之外,C++中的哪些运算符不会被继承?
Which operators in C++ won't be inherited except assignment operator?
我很难理解这一点:
众所周知,赋值运算符不会直接继承。。。我昨天问过这个链接
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章中提到了
除赋值运算符外,运算符是自动的继承到派生类中。
相关文章:
- 通过继承类使用来自不同命名空间的运算符
- 运算符继承和 cpp 核心准则 c.128 的问题
- 如果我真的真的想从 STL 容器继承,并且我继承构造函数并删除新运算符,会发生什么?
- 继承模板化转换运算符
- C++ 继承运算符=
- 在继承的模板类中使用下标 [] 运算符
- 如何调用继承的重载运算符<<并在派生类的输出中添加更多文本?
- C++模板化类上继承的运算符'<<'
- 类继承和运算符重载
- 通过继承重载运算符会导致歧义
- 使用继承的指针列表复制构造函数或重载运算符=
- C++中移动赋值运算符的继承
- 如何在C++上的多个继承上下文上使用特定基类中的运算符
- 继承类中的比较运算符
- 继承 C++14 中的模板化运算符 =:g++ 和 clang++ 的不同行为
- 具有继承的未声明标识符(运算符 ostream)
- 如何使用运算符编写可继承的模板类
- C++运算符继承和重载
- 重载的强制转换运算符继承(Visual C++)
- 赋值运算符继承