在 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+=
,他是指这个吗?)