运算符重载
运算符重载的一般格式:
operatorop(args)
调用形式如下,假设定义了加法运算符。
a = b + c
a = b.operator+(c)
以下运算符只能通过成员函数重载:
- =
- ()
- []
- ->
友元函数
友元有3种,分别是:友元函数、友元类、友元成员函数。
通过让函数成为类的友元,可以赋予该函数与类成员函数相同的访问权限。
友元函数定义如下,函数原型放在类声明中。
friend Time operator*(double m,Time& t);
在定义中要注意不要使用“::”限定符,不要在定义中使用friend关键字。
“<<”运算符的重载形式如下:
ostream& operator<<(ostream& os,const Time& t)
{
//输出数据
return os
}
这里要注意的一点是:对于非成员函数:私有成员,必须使用友元函数进行访问;但公有成员,可以不是友元函数。(具体怎样访问还需要再研究)。
c++中通过接受一个参数的构造函数为将类型与该参数相同的值转换为类提供了蓝图。