創建由其他類組成的類時,是否值得通過使用指針而不是值來減少依賴關係(從而減少編譯時間)?應該使用指針來減少頭依賴關係嗎?
例如,以下使用值。
// ThingId.hpp
class ThingId
{
// ...
};
// Thing.hpp
#include "ThingId.hpp"
class Thing
{
public:
Thing(const ThingId& thingId);
private:
ThingId thingId_;
};
// Thing.cpp
#include "Thing.hpp"
Thing::Thing(const ThingId& thingId) :
thingId_(thingId) {}
但是,下面的修改版本使用指針。
// ThingId.hpp
class ThingId
{
// ...
};
// Thing.hpp
class ThingId;
class Thing
{
public:
Thing(const ThingId& thingId);
private:
ThingId* thingId_;
};
// Thing.cpp
#include "ThingId.hpp"
#include "Thing.hpp"
Thing::Thing(const ThingId& thingId) :
thingId_(new ThingId(thingId)) {}
我讀過,推薦這樣的做法,但如果你有大量的指針,就會有大量的new
調用,我想會是緩慢的一個職位。
「是否值得通過使用指針而不是值來減少依賴關係(從而編譯時間)?」 - 我看不到如何使用指針「減少依賴關係」 - 以及它與編譯時間的關係。 – Dai
沒有任何關於需要「新」調用的指針。我可以編寫一堆代碼,並在各處指向指針,而不是一個'new'調用。 –
@Dai:你可以轉發聲明pointee類型,而不是'#include'這個類型完全定義的整個頭文件。 –