[C++]1.14 运算符重载

运算符的连续使用(链式编程)需要注意重载函数的返回值设置。

加号运算符重载

两种实现方式:

1.成员函数重载

Person operator+(Person &p){ }

2.全局函数重载

Person operator(Person &p1,Person&p2)

注意:1.两种方式都可以利用本质运行,也可以使用简化后的 p1+p2 。

2.内置数据类型运算符不可改变。

左移运算符重载

左移运算符<<的重载主要是为了输出自定义数据类型的方便。

根据使用习惯,左移运算符重载通常以全局函数定义而不以成员函数定义。原因如下:

class Person {

public:                                                         成员函数的弊端:

void operator<<(ostream &cout){               1.这种形式的 p.operator<<(cout)简化后的形式是

cout<<A<<endl<<B<<endl;                           p<<cout 的形式,与期望相反。

}                                                                  2.这种形式不支持链式传递,即

private:                                                           cout<<p<<p1<<endl<<"We are the world";

    int A;                                                           因为在ostream &cout传递过程中,成员函数

    int B;                                                           重载依赖p1而不能单独使用。

}

由上可知,左移运算符重载以全局函数进行。(通过友元来配合私有权限)

本质形式实例: ostream &operator (ostream out,Person  &p){    return out}

 

上一篇:面向对象数组排序


下一篇:基于lua语言实现面向对象编程