172210704111-陈国佳总结《2017年12月6日》【连续057天】
标题:流插入,流提取运算符和类型转换运算符的重载;
内容:
A.流插入和流提取运算符:
cout<<5<<"this";为什么能够成立?
“<<”(左移) “>>”(右移)
其中,cout是iostream中定义的ostream类的对象,而“<<”进行了重载;
实现:
ostream & ostream::operator<<(int n)
{ ......... return*this;}
ostream & ostream::operator<<(const char*s)
{ ......... return*this;}
注:返回值是orstream&是为了cout<<5返回为cout,与后面的<<"this"继续反应;
函数调用形式:cout.operator<<(5).operator<<("this");
举例:
class CStudent{
public: int nAge;
};
ostream & operator<<(ostream & o,const CStudent & s){
o<<s.nAge; return o;
} //注意要定义成全局函数
int main(){
CStudent s;
s.nAge=5;
cout<<s<<"hello";
return 0;
}
B.类型转换运算符重载:
class Complex{
double real,imag;
public:
Complex(double r=0,double i=0):real(r),imag(i){ };
operator double () { return real;}
//注意重载函数的返回值就为double,不需要写
};
int main()
{
Complex c(1.2,3.4);
cout<<(double)c<<endl;
double n=2+c; //等价于 double n=2+c.operator double()
cout<< n;
}
明日计划:自增,自减运算符的重载;