将文件间的编译依存关系降至最低

版权声明:快乐源自分享,欢迎高手指正错误。 https://blog.csdn.net/gdnh22a/article/details/82767989

2016年3月22日 第四周 星期二 阴

《EFFECTIVE C++》
第140页
条款31:将文件间的编译依存关系降至最低。

C++并没有把“将接口从实现中分离”这事做得很好。

编译依存关系:compilation dependency。
连串编译依存关系:cascading compilation dependencies。

================================================================================
为什么C++坚持将class的实现细目置于class定义式中?
namespace std{
class string; //前置声明(不正确)
}
这种前置声明不正确,string不是个class,它是个typedef(basic_string),正确的前置声明比较复杂,因为涉及额外的templates。

关于“前置声明每一件东西”的第二个困难是,编译器必须在编译期间知道对象的大小。
int main()
{
int x;
Person p(params);
}
编译器永远知道一个int占用的内存,那么编译器如何确定Person对象占用的内存呢?
唯一的办法就是询问class定义式。

假如class定义式可以合法地不列出实现细目,编译器又该如何确认呢?

3月22日完。

猜你喜欢

转载自blog.csdn.net/gdnh22a/article/details/82767989