在类内和类外的定义处执行类转发声明是否有区别
Is there a difference in doing class Forward Declaration at the definition inside the class and outside the class
示例类B
标头:
class A;
class B {
protected:
A* Foo;
};
与
class B {
protected:
class A* Foo;
};
两个类前向声明之间有什么区别和/或哪个是首选?
没有区别,但第一种方法更可取,因为它使代码更清晰。
这是精心设计的类型说明符的两个示例,它们实现了相同的目标。
正如 Vlad 在他的回答中提到的,第一个示例((3(关于 cpp首选项(是转发声明类型的常用方法,并且可能比其他选项有更多的开发人员理解。
这两者之间没有区别,但大多数人更喜欢第一个,因为它使A
的范围显而易见。
请注意,这两者之间存在巨大差异:
class B {
class A* Foo;
};
class C {
class A;
A* Foo;
};
它声明了一个类A
在C
的作用域内,这与B
中的A
不同。
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- C++,系统无法执行指定的程序
- 使用C++中的模板和运算符重载执行矩阵运算
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 执行函数时导致崩溃的变量
- 无论条件是否为true,if总是在c++中执行
- 当函数模板参数是具有默认参数的类模板时,函数模板参数的推导如何执行
- 在C++中对T*类型执行std::move的意外行为
- 使用QProcess执行命令,并将结果存储在QStringList中
- 如何在没有信号的情况下从C++执行QML插槽
- 如何确认我的constexpr表达式实际上已经在编译时执行
- C++17中的并行执行策略
- QML按钮点击功能执行顺序
- 程序在执行程序的其余部分之前退出
- 为什么catch中的代码没有被执行
- 正在折叠转发引用
- C++从其他 constexpr 创建 lambda 不能按顺序执行 Constexpr
- 将执行、作业和WinAPI相乘
- 在类内和类外的定义处执行类转发声明是否有区别
- 函数转发参数而不执行任何操作