057day(流插入,流提取运算符和类型转换运算符的重载)

来源:互联网 发布:mongodb和mysql对比 编辑:程序博客网 时间:2024/06/04 18:34

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;




明日计划:自增,自减运算符的重载;

阅读全文
0 0
原创粉丝点击