C++。这行代码,有错误么。懂的就请教下。

来源:百度知道 编辑:UC知道 时间:2024/06/15 17:58:21
ostream& operator<<(ostream& cout, complex& c1)
{
return cout<<c1.real()<<c1.imag();
}

就是运算符重载。这个是函数。然后我调用
complex c(1, 3);
cout<<c;
这种做法是否正确,如果是错误的。帮忙说下,要是觉得学到东西的话,我加分。
谢谢呢

可以啊,对<<实现complex类的重载,输出complex.real,complex.imag函数的返回值,但前提条件是real和imag函数的返回值可以对<<操作符重载,如整型,字符串等,或是其他的类或类的引用,但这个类能对<<重载。
另外,楼上是错误的,complex放后面。

ostream& operator<<( complex& c1,ostream& cout)

...

complex c(1, 3);

应该这样
将操作符重载的原型放在类的公有申明(可以在申明前加上friend,即友元函数),然后定义时
一般来说不用cout,而用os,即
ostream & operator<<(ostream & os,complex& c1)
{
return os<<c1.real()<<c1.imag();}
另外,我不知道你real()和imag()方法的定义,如果你的这两个方法没有返回值或者返回值不是基本类型的话,这样是没用的,不过LZ这样写应该它们是能返回值的,希望我说的对LZ能有些许帮助.