1. 牵一发而动全身
现在开始进入你的C++程序,你对你的类实现做了一个很小的改动。注意,不是接口,只是实现,而且是private部分。然后你需要rebuild你的程序,计算着这个build应该几秒钟就足够了。毕竟,只修改了一个类。你点击了build 或者输入了make( 或者其他方式),你被惊到了,然后羞愧难当,因为你意识到整个世界都被重新编译和重新链接了!当这些发生时你不觉的感到愤恨么?
2. 编译依赖是如何发生的
问题出在C++并不擅长将接口从实现中分离出来。类定义不仅指定了类的接口也同时指定了许多类的细节。举个例子:
1 class Person { 2 public: 3 Person(const std::string& name, const Date& birthday, 4 const Address& addr); 5 std::string name() const; 6 std::string birthDate() const; 7 std::string address() const; 8 ... 9 private:10 std::string theName; // implementation detail11 Date theBirthDate; // implementation detail12 13 Address theAddress; // implementation detail14 15 };
网友评论