2
我正在閱讀Scott Meyers的Effective C++,並且我對第31項「最小化文件之間的編譯依賴關係」有疑問。文件和疙瘩成語之間的編譯依賴關係
在示例中,他展示了疙瘩成語:
#include <string> // standard lib shouldn't be forward-declared
#include <memory>
class PersonImpl; // Forward decl of Person impl.class
class Date; // forward decls of classes used in Person interface
class Address;
class Person
{
public:
Person(const std::string& name, const Date& birthday, const Address& addr);
std:string name() const;
std:string birthDate() const;
std:string address() const;
...
private:
std::tr1::shared_ptr<PersonImpl> pimpl;
};
然後,他這樣說:
避免使用對象時,對象引用和指針會做。您可以定義引用和指向類型的指針,只有該類型的聲明 。定義類型的對象需要存在該類型的定義 。
是否曾經有過這樣的情況:不能使用使用引用或指針?難道你不能使用你設計的全部類的疙瘩成語嗎?
這很有道理,我沒有想到模板。性能損失是從堆中分配給堆棧的,對吧? –
表現處罰:是的。關於複雜性:打開文件時非常令人沮喪,所有類成員都只是轉發參數。 (或者他們?) – erenon
我同意,當我讀它時聽起來有些過於複雜,這就是爲什麼我不得不問。感謝您的輸入! –