在one of Stroustrup's faq question,他給出了下面的例子:將數據放在類聲明中?
template<class Scalar> class complex {
public:
complex() : re(0), im(0) { }
complex(Scalar r) : re(r), im(0) { }
complex(Scalar r, Scalar i) : re(r), im(i) { }
// ...
complex& operator+=(const complex& a)
{ re+=a.re; im+=a.im; return *this; }
// ...
private:
Scalar re, im;
};
,並介紹:
這種類型的設計是使用多爲內置型和需要在聲明中表示,使它可能創建真正的本地對象(即分配在堆棧上而不是堆上的對象)並確保正確內聯簡單操作。
有人可以幫忙解釋一下嗎?把re
,im
中的數據放在類聲明中讓類對象在棧上分配?內聯怎麼樣? (我可以看到一個內嵌的operator+=
,這是他的意思嗎?)
我已經刪除了第二個問題。隨意再次提問,但如果您這樣做,請提供您想知道的源代碼。 – MSalters
你有沒有把「複雜」稱爲「基類」的原因?它使問題標題產生誤導。 – juanchopanza
謝謝juanchopanza。更正它。 – user1559625