C++友元
来源:互联网 发布:淘宝代运营的公司销售 编辑:程序博客网 时间:2024/05/17 09:06
友元成员函数
class Car{friend void Key::set_Sound(Car &c, int s);...};
这样在Key::set_Sound()中可以访问Car的私有成员(编译器在处理friend这条语句时,应先看到Key类的声明和set_Sound()方法的声明)。
在声明时要注意循环依赖(若class Key在class Car前声明,Key的成员函数的参数中有Car,若Car在Key前声明,则Car中有friend函数),解决方法是使用前向声明——
class Car; //前向声明class Key {...}; //注:这里只是成员函数的声明,因为如果定义函数中用到了Car的成员函数,那么在class Key之前应该有Car中函数的声明,而Car的声明在Key之后class Car {...};//可声明,可定义//这里定义Key的成员函数
如果想让Key的成员函数成为内联函数,则可以用inline关键字——
内联关键字inline要与函数定义在一起(这体现了高质量C++编程风格的一个基本原则——声明和定义不可混为一谈——因为用户没必要知道函数是否内联),内联函数inline void Key::set_Sound(Car &c, int s) {...}对编译器是可见的(这样能在调用点展开函数)。在类声明中定义的成员函数将自动成为内联函数,这虽然方便,但不是一种良好的编程风格。
class A {public:void B();};inline void A::B() {...}
内联函数的机制是在函数C中调用了class A中的函数B,不是像外联函数那样跳转到B的函数体,执行完后再返回到C中,而是在C中展开B的运行代码,优势是节省了调用开销,提高了运行速度。
1 0
- C++(一)友元
- [C++]友元学习
- [c++]友元函数
- [c++] 友元详解
- 【C++】友元函数
- c++:友元函数
- C++:友元函数
- C++:友元
- C/C++ 友元
- 【C++】友元函数
- C++:友元
- C++----友元
- 【C++】C++友元
- C++_友元函数
- C++_友元函数
- C++_友元函数
- C++_友元函数
- C++_友元函数
- 黑马程序员_程序学习感悟和总结
- p2020ds开发板
- 黑马程序员_面对对象
- android的四大组件(转)
- ArcEngine在VS环境下开发遇到的一些配置问题
- C++友元
- u-boot2013.10引导linux3.10.30记录
- 强东哥和小马哥的爱情马拉松
- 黑马程序员_面向对象关键字static
- hdu1001 Sum proble 差点被这个题玩死
- Android绘图相关类文档学习与翻译
- ios编写search bar
- MFC_随机生成数
- 什么是ISO Speed