1. 牽一發(fā)而動全身
現(xiàn)在開始進(jìn)入你的C++程序,你對你的類實(shí)現(xiàn)做了一個很小的改動。注意,不是接口,只是實(shí)現(xiàn),而且是private部分。然后你需要rebuild你的程序,計(jì)算著這個build應(yīng)該幾秒鐘就足夠了。畢竟,只修改了一個類。你點(diǎn)擊了build 或者輸入了make( 或者其他方式),你被驚到了,然后羞愧難當(dāng),因?yàn)槟阋庾R到整個世界都被重新編譯和重新鏈接了!當(dāng)這些發(fā)生時你不覺的感到憤恨么?
2. 編譯依賴是如何發(fā)生的
問題出在C++并不擅長將接口從實(shí)現(xiàn)中分離出來。類定義不僅指定了類的接口也同時指定了許多類的細(xì)節(jié)。舉個例子:
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 };
延伸閱讀
學(xué)習(xí)是年輕人改變自己的最好方式