C++类型的属性是继承的吗
Are C++ type-attributes inherited?
我认为这并不是函数属性继承了吗?的重复?,因为我想知道的是类,而不是成员函数:
struct [[nodiscard]] error {};
struct critical_error : error {};
critical_error foo();
int main() {
foo(); // no warning.
}
这里似乎没有继承[[nodiscard]]
属性。是否所有类型属性都相同?
正如您自己断言的那样,它们不是。该标准明确了从基类到派生类的确切继承内容:
10.6派生类〔class.Derived〕
2[…]除非在派生类中重新声明,否则基类的成员也被认为是派生类的成员。基类的成员(构造函数除外(被称为由派生类继承。基类的构造函数也可以继承,如〔namespace.udcl〕中所述。继承的成员可以在表达式中以与派生类的其他成员相同的方式引用,除非它们的名称是隐藏的或不明确的([class.member.lookup](。
为了完整起见:在关于属性的特定部分中也没有关于继承的措辞。
基本上:属性不是类或构造函数的成员,因此不能继承。
相关文章:
- 子目录是否继承属性,例如add_definitions,include_directories和父Cmakelist.t
- C++类型的属性是继承的吗
- 嵌套结构属性继承
- C++ 继承:是否必须在派生类中重复父属性?
- 动态分配的属性和继承
- C++:对于继承多个类的类,如何从一个类继承某些属性,从另一个类继承其他属性?
- 无法访问继承的类属性
- Qt 无法继承属性
- 继承:派生类的基类属性可访问性
- qi ::以继承属性为继承属性的规则
- 属性说明符序列继承吗
- 具有静态属性(服务定位器模式)的模板继承
- 将 Makefile 包含在 qmake 中,继承属性
- 在C++中,继承超类的正确方法是什么,以便它们的子类在超级类和子类中没有重复的属性?
- 具有继承属性的增强精神解析器 - 简单示例无法编译
- C++ 中的继承对象和属性丢失
- 继承和派生属性在C++中消失
- Boost::精神传递继承属性中的语义动作
- 将boost::spirit符号表作为继承属性传递到语法中
- 具有合成和继承属性的深度递归qi语法(解析器)