c++运算符问题

classcomplex{public:complex(doublereal=0,doubleimag=0):r(real),i(imag){}friendcomplex... class complex
{
public:
complex(double real=0,double imag=0):
r(real),i(imag){}
friend complex operator+(complex&,complex&);
friend complex operator -(complex&,complex&);
friend complex& operator +=(complex&,complex&);
void print()
{
cout<<setiosflags(ios::showpos)
<<r<<" "<<i<<'i'<<endl;
}
private:
double r , i;
};
请问complex(double real=0,double imag=0):
r(real),i(imag){}中的冒号是什么意思,构造函数函数体不是应该在{}内吗?还有参数表中&是什么意思
展开
 我来答
海涛大兴
2011-08-30 · TA获得超过641个赞
知道小有建树答主
回答量:434
采纳率:100%
帮助的人:314万
展开全部
complex(double real=0,double imag=0): r(real),i(imag){}
这种使用冒号的方式叫“初始化列表”方法,这种方法效率更高,《Effective C++》中就提到这种方法了,作者提倡尽量使用这种方法初始化变量,速度、效率都很高。

当然,你可以在{}中写初始化语句,但是那样的执行速度要慢一些。为什么效率低呢,可以参考《Effective C++》上面讲的很详细。

参数列表中的“&”表示参数传递按照引用传递,定义函数的时候也可以不写参数名,这里就是省略了参数名称。 但是在这个函数具体实现的时候,参数名称必须要写上的。不过,我觉得还是都写上参数名比较好。例如:
friend complex operator+(complex &a,complex &b); 更好一些。
更多追问追答
追问
complex& operator +=(complex&,complex&);
中为什么complex& operator 之间有&
追答
外面的表示返回引用啊,呵呵
百度网友186ad15
2011-08-30
知道答主
回答量:17
采纳率:0%
帮助的人:10.1万
展开全部
这是构造函数初始化的一种形式啊,冒号后面是你的初始化过程
complex(double real=0,double imag=0):
r(real),i(imag){}
相当于
complex(double real=0,double imag=0)
{ r=real;
i=imag;
}

参数中的&是引用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式