成員變量的地方CONSTRUTION採取以下類:在通過構造
template <typename TPayload>
class Message
{
public:
Message(const TPayload& payload)
: m_header(sizeof(TPayload)),
m_payload(payload) {}
private:
const Header m_header;
const TPayload m_payload;
};
每當構造消息我必須創建一個TPayload(參數有效載荷),複製到m_payload此,然後破壞載荷。現在認爲這可以做到每秒100萬次,我認爲這是一個浪費的努力。
我的問題是,我可以強制m_payload的就地建設,避免tempory有效載荷?我正在考慮
一個可能的解決方案是超載建設像下面很多次,但說實話與多個argumwents我懷疑有很多節約的所有拷貝。
template <typename TPayload>
class Message
{
public:
template <typename A>
Message(const A& a)
: m_header(sizeof(TPayload)),
m_payload(a) {}
template <typename A, typename B>
Message(const A& a, const B& b)
: m_header(sizeof(TPayload)),
m_payload(a, b) {}
private:
const Header m_header;
const TPayload m_payload;
};
這是一個僞?您應該在發佈之前嘗試編譯代碼,或者至少應該提及這是僞代碼,因此無法編譯。 – Nawaz 2011-04-19 15:58:23
這是對我正在撰寫的課程的簡化,更多用於演示目的。更正了一些丟失的括號:) – Graeme 2011-04-19 16:00:58
不僅括號丟失,代碼甚至是正確的。如果你發佈這個,我們如何推斷你已經知道你的代碼多少?我看到你的代碼,你沒有模板,並沒有使用它編寫代碼的跡象。 – Nawaz 2011-04-19 16:04:20