-类的使用
-运算符重载
运算符重载
运算符重载是一种形式的C++多态。12345//重载范例for(int i=0;i<20;i++) a[i]=b[i]+c[i];//可以定义一个数组的类,重载+运算符a=b+c;
|
|
重载限制
多数C++运算符可以用上述方式重载。
但C++对运算符重载还有以下的限制:
1.重载后的运算符必须至少有一个操作数是用户定义的类型,这将防止用户为标准类型重载运算符。
2.使用运算符时不能违反运算符原来的句法规则。
3.不能创建新的运算符
4.不能重载以下操作符:
sizeof:sizeof运算符
.:成员运算符
.*:成员指针运算符
:::作用域解析运算符
?::条件运算符
typeid:RTTI运算符
const_cast:强制类型转换运算符
dynamic_cast:强制类型转换运算符
reinterpret_cast:强制类型转换运算符
static_cast:强制类型转换运算符
5.大多数运算符可以通过成员或非成员函数进行重载,但下面的运算符只能通过成员函数进行重载。
=:赋值运算符
():函数调用运算符
[]:下标运算符
->:通过指针访问类成员的运算符
友元
友元有三种:
1.友元函数
2.友元类
3.友元成员函数
友元函数可以访问类的私有成员(private部分)
创建友元函数的第一步是将其原型放在类声明中,并在原型声明前加上关键字friend
该原型意味着两点:
1.虽然该函数是在类声明中声明的,但它不是成员函数,因此不能使用成员运算符来调用;
2.虽然该函数不是成员函数,但他与成员函数的访问权限相同。
创建友元函数的第二步是编写函数定义。
因为友元函数并不是类的成员函数,因此在编写友元函数定义时,不应使用作用域解析运算符(::)。其他部分与普通函数无异。