C++ 封装之友元、内联函数、
一、友元
1.概念:友元函数不是成员函数,它定义在类的外部,只需要在类中声明即可;友元函数可以访问所有私有成员和保护成员,一般情况下不去使用,使用不当会破坏程序面向对象的特性;
2.语法:friend <函数声明>
3.友元类
(1)定义:一个类声明另一个类是自己的友元;假如类A声明类B是自己的友元,那么在类B中可以访问类A所有的私有成员和保护成员;
(2)语法:friend <类名>
(3)注意事项:
1)友元不具有相互性,若类B是类A的友元,类A不一定是类B的友元;
2)友元不能被继承;友元不具有传递性;
二、内联函数
1.目的:解决程序中函数调用的效率问题。
2.原理:在编译器阶段,把函数复制镶嵌到主函数中,与调用一般函数不同,主函数在调用一般函数时,是指令跳转到被调用函数的入口地址,执行完被调用函数后,指令再跳转回主函数上继续执行后面的代码。
3.使用规则:
(1)函数声明和定义必须在同一文件进行,声明与定义时需要添加inline修饰符;
inline int func(<形参列表>)
{
<函数体>
}
(2)内联函数内不允许使用循环语句与开关语句;
(3)内联函数不能超过10行,如果超过则编译器不会替换,而还是使用调用的方式调用函数;
4.类与内联函数;
(1)类内定义的函数都是内联函数,不管是否加了关键字inline;
(2)声明在类内,定义在类外,看是否有关键字inline;
5.与宏定义的区别;
(1)宏是由预处理器进行代码替换,而内联函数由编译器进行代码替换;
(2)内联函数是真正的函数;