传智扫地僧课程学习笔记。
首先要数的是,
操作符重载的正规实现方式是,成员函数,
然后我们再次要补一刀的是,
那友元函数又为何要存在?
cout<<"hey"<<endl; //这没错
可是输出一个自定义类对象,就会报错,
但我们又没法获得cout的源码,
所以就只能通过友元函数的方式来实现,重载左移操作符,
ostream& operator<<(ostream &out, Complex &c1)
{
out<<"12345 生活真是苦"<<endl;
out<<c1.a << " + " << c1.b << "i" << endl;
return out;
}
//2 函数返回值当左值 需要返回一个引用
cout << c1 << "aaddddd";
//
//cout.operator<<(c1) .operator<<("aaddddd");
//void.operator<<("aaddddd");
补一句:对于输出我们自定义对象,会自动调用我们实现的函数,
对于输出对象是字符串,会调用我们平时使用的实现,
最后,注意返回引用,
ps:
operator+,
函数调用是c.openator+的形式,
所以如果是27+c1,
效果就是27.operator+,
这就是错的,
所以调用得是c1+27,不知道你明白我说的意思不?
然后就是,重载也有一些限制,