一、运算符重载
C++中是运算符当作函数来看待,所以C++中的运算符可以重载,这样可以让类对象支持运算符,对类对象进行定制化操作。
例如:string类就支持很多运算符来代替标准库中的函数。
= strcpy
+= strlen
==|!=|>=|<= strcmp
二、双目录运算符重载
假如:Test a,b; a+b操作可以调用两种函数
Test的成员函数:a是触发者,b是参数
Test operator+(cosnt Test& b) const
{
return a+b; // 返回临时对象
}
全局函数:a,b都是参数
Test operator+(const Test& a,const Test& b)
{
return a+b; // 返回临时对象
}
注意:如果成员运算符函数和全局函数运算符函数都实现,调用时可能会产生二义性错误,成员或全局实现一个即可。
友元函数:
在类外的函数想访问类的私有成员时,需要把函数声明类的友元函数,但友元函数只有朋友,只有访问权,没有实际的拥有权。
class Test
{
public:
friend Test