友元的一点笔记
来源:互联网 发布:谁杀了宇智波一族 知乎 编辑:程序博客网 时间:2024/04/29 00:11
如果A类的成员函数成为B类的友元成员函数,并且在A类的成员函数里面有B类的引用。则必须小心排列类声明和类定义的顺序。
因为A类的成员函数有B类的引用,所以编译器必须先看到B类的声明。但是A类的成员函数又是B类的友元成员函数,所以编译器必须看到A类的定义,形成一个死循环。因此,对B类使用前向声明(forward declaration),让编译器知道B类的定义稍后提供。
class B //forward declaration{ friend void A::method( B &b); ........};class B;class A{........};class B{........};
如果此时A类中的成员函数通过B类的引用,调用B类的成员函数,编译器此时必须知道B类的成员函数的定义,那么此时A类的成员函数定义就不能放在A类的定义中,必须将定义放在B类的定义之后。
如下
class B;class A{........};class B{........};inline void A::method(B &b) {return b.method();}
内联函数的链接性是文件内部,故内联函数的定义必须在使用该函数的文件中。
如果A类的成员函数使用B类的对象,那么A类的成员函数必须知道B类的定义,如果不知道。那么A类的成员函数必须在B类定义之后才能定义。
class A{ friend class B; public: void method1( B &b); .......};class B{ friend class A; void bool method2( A &a){a.method3();} ......};inline void A::method1(B &b){ ......}
- 友元的一点笔记
- 有关友元的一点运用
- C++ 友元的一点总结
- 友元函数与成员函数的一点区别
- hive 元数据的一点问题
- 关于模板元编程的一点反思
- J2ME的一点笔记
- photoshop的一点笔记
- Pintos的一点笔记
- oauth的一点笔记
- javascript的一点笔记
- emacs 的一点笔记
- 密码学的一点笔记
- UIFont的一点笔记
- Linux的一点笔记
- 前端的一点笔记
- c++中模版友元函数的一点小问题...无法访问private成员
- 关于Groovy里面元编程(MetaProgramming)的一点总结
- 指针的引用(*&)与指针的指针(**)
- Windows游戏设计(一)- 拼图游戏 - 使用Win32 SDK
- HDU 4445 Crazy Tank(枚举角度)
- 利用内存linux中加速Firefox和Chrome的载入速度
- 书同文,币同制,车同轨
- 友元的一点笔记
- MVC模式
- 做项目就是消除不确定性
- 毛玻璃
- POJ 1466 Girls and Boys
- 用索引删除数组元素,防止删除元素对索引造成干扰的两种解决方法
- MyEclipse设置JSP页面默认编码方式
- 什么是敏捷开发
- IOS中Json解析的四种方法