目录
一、友元
1、friend(友元)
1、访问权限
友元不受类中访问权限的影响,并且在任意权限区都可以声明,友元可以访问类对象的任意成员。
2、在类中的声明格式
friend 函数类型 函数名(参数列表);
3、分类
友元函数和友元类
4、优点
可以提高程序运行效率。
5、缺点
会破坏类的封装性。
2、友元函数
1、普通函数作为类的友元
写法:friend 函数类型 函数名(参数列表);
作用:可以访问类中所有权限的数据成员
2、A类的成员函数作为B类的友元函数
在类B中声明,写法: friend 函数类型 A::函数名(参数列表);
3、作用域
友元函数属于哪个类,作用域就在哪。
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
3、友元类
1、什么时候可以写成友元类
如果类A的成员函数需要频繁的访问类B中的数据成员,那么就可以把类A写成类B的友元类。
2、写法(格式)
friend class +类名;
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
二、运算符重载
运算符重载(以复数为例)。 注意点:(:: ? : . -> & sizeof)这些不能重载。
1、+号重载(-号类似)
普通函数重载+,函数有两个参数(类对象的引用)。成员函数重载+,函数有一个参数(类对象的引用),另一个参数为类本身,可以不用写。
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2、++重载(--类似)
后++或者后--,函数参数里有个int。前++或前--,函数返回值为类的引用(&),不走拷贝构造。
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
3、=号重载
一个对象赋值给另一个对象,也会走拷贝构造函数。赋值运算符重载不能用友元重载,否则会报错。
原创不易,转载请标明出处。