dev*_*ium 8 c++ language-lawyer
为什么这是一个编译错误:
void f() {
g();
}
void g() {
}
Run Code Online (Sandbox Code Playgroud)
但不是这个:
class X {
void a() {
b();
}
void b() {
}
};
Run Code Online (Sandbox Code Playgroud)
我假设编译器(至少一般来说)会从上到下、从左到右读取代码,这就是在第一段代码中我们需要先定义一个前向声明void g()的f()原因使代码编译。但这种逻辑似乎不适用于类——为什么呢?
C 始于 1972 年;C++ 的历史可以追溯到 1985 年。C++ 从 C 继承了前向声明要求和头文件的设计,并保留了该行为以实现兼容性,但能够改进类的功能,而 C 则没有。
| 归档时间: |
|
| 查看次数: |
185 次 |
| 最近记录: |