在Stroustrup 的一个常见问题中,他给出了以下示例:
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+=
内联,他是这个意思吗?)