Stroustrupのよくある質問の 1 つで、彼は次の例を挙げています。
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;
};
次のように説明します。
この型は組み込み型と同じように使用するように設計されており、真にローカルなオブジェクト(つまり、ヒープではなくスタックに割り当てられるオブジェクト)を作成できるようにするために宣言で表現が必要です。単純な操作のインライン化。
誰かがこれを説明してくれますか? Put re
、im
クラス宣言のデータにより、クラスオブジェクトがスタックに割り当てられますか? そして、インライン化はどうですか?operator+=
(インライン化されているのが見えますが、彼はこれを意味しているのでしょうか?)