c++oop分析一:

来源:互联网 发布:深圳阿里云大厦在哪里 编辑:程序博客网 时间:2024/05/17 03:49

运算符重载

运算符重载是一种形式的c++多态。用户定义多个名称相同但参数列表不相同的函数,称为函数重载或函数多态。c++允许将运算符重载扩展到用户定义的类型,例如允许使用+将两个对象相加。

1.运算符函数格式如下:

operatorop<argument-list>下面看对比:(1)没重载://定义时间类:clsss Time{  private:  public :  Time sum(const Time&t) const;}/*这个sum函数用来计算两个时间对象之和,之所以用参数是引用 是因为引用传递比值传递效率高,而且省内存。*/(2)重载://定义时间类:clsss Time{  private:  public :  Time Time::operator+(const Time&t) const;}/*和sum()一样,operator+()也是由Time对象调用的,他的第二个Time对象作为参数并返回一个Time对象。*/
可以有下面两种调用方式:Time t1;Time t2;Time sum;sum=t1+t1;sum=t1.operoator(t2);上述两种调用都行。

2.重载的限制:
重载的运算符不必是成员函数,但必须至少有一个操作数必须是用户定义的类型。

上述时间类的其他重载版:Time operator-(const Time &t) const;Time operator*(const Time &t) const;

友元函数:

友元函数是一个和类的成员函数相同权限的非成员函数,可以访问类的私有成员。

friend Time operator*(double m,const Time &t); //重载*常用的友元:重载<<(1)void operator<<(ostream &os,const Time &t){ os<<t.hours<<t.minutes;}(2)ostream & operator<<(ostream &os,const Time &t){os<<t.hours<<t.minutes;return os;}
原创粉丝点击