一、循环依赖
在 C 和 CPP 这种有 include
机制的语言中,当项目复杂时,很容易出现一种头文件相互包含的错误,如下所示:
在 A.h
内容如下:
#ifndef _A_H_
#define _A_H_
#include "B.h"
class A
{
B* pb;
void doSomethingA() {
pb->method();
}
};
#endif // _A_H_
在 B.h
内容如下:
我们常听一个说法“在语法上,C++ 是 C 的超集”,这句话的意思是说,C++ 继承并发展了 C 。这是十分有道理的事情,但是这个说法往往造成两个常见的误解:
这两点其实并不正确。C++ 作为一门独立的语言,虽然起源于 C ,但是在设计思想上和 C 可以说是截然不同,但是又因为起源于 C ,在设计时又不可避免的带上了 C 的烙印,本文希望探讨一下 C++ 与 C 的继承和发展关系,故起名为“滥觞”。
这章可以看作是“CPP设计-寸步难行”的姊妹篇,这章介绍了 C 和 C++ 的不同,“寸步难行”介绍了 C 和 C++ 的相同之处。