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){}中的冒号是什么意思,构造函数函数体不是应该在{}内吗?还有参数表中&是什么意思 展开
{
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){}中的冒号是什么意思,构造函数函数体不是应该在{}内吗?还有参数表中&是什么意思 展开
展开全部
complex(double real=0,double imag=0): r(real),i(imag){}
这种使用冒号的方式叫“初始化列表”方法,这种方法效率更高,《Effective C++》中就提到这种方法了,作者提倡尽量使用这种方法初始化变量,速度、效率都很高。
当然,你可以在{}中写初始化语句,但是那样的执行速度要慢一些。为什么效率低呢,可以参考《Effective C++》上面讲的很详细。
参数列表中的“&”表示参数传递按照引用传递,定义函数的时候也可以不写参数名,这里就是省略了参数名称。 但是在这个函数具体实现的时候,参数名称必须要写上的。不过,我觉得还是都写上参数名比较好。例如:
friend complex operator+(complex &a,complex &b); 更好一些。
这种使用冒号的方式叫“初始化列表”方法,这种方法效率更高,《Effective C++》中就提到这种方法了,作者提倡尽量使用这种方法初始化变量,速度、效率都很高。
当然,你可以在{}中写初始化语句,但是那样的执行速度要慢一些。为什么效率低呢,可以参考《Effective C++》上面讲的很详细。
参数列表中的“&”表示参数传递按照引用传递,定义函数的时候也可以不写参数名,这里就是省略了参数名称。 但是在这个函数具体实现的时候,参数名称必须要写上的。不过,我觉得还是都写上参数名比较好。例如:
friend complex operator+(complex &a,complex &b); 更好一些。
更多追问追答
追问
complex& operator +=(complex&,complex&);
中为什么complex& operator 之间有&
追答
外面的表示返回引用啊,呵呵
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询