c++的友元
来源:互联网 发布:网络英语老师 编辑:程序博客网 时间:2024/04/30 01:23
对于一个没有定义public访问权限的类,能够让其他的类操作它的私有成员往往是有用的。例如你写了一段binary tree的代码,Node是节点类,如果能够让连接多个节点的函数不需要调用public方法就能够访问到Node的私有成员的话,一定是很方便的。这样BinaryTree就可以直接访问Node中的private的成员了,就像下面这样:
Friend Classes(友元类)
C++中的friend关键字其实做这样的事情:在一个类中指明其他的类(或者)函数能够直接访问该类中的private和protected成员。你可以这样来指明:
friend class aClass;注意:friend在类中的声明可以再public、protected和private的如何一个控制域中,而不影响其效果。例如,如果你在protected域中有这样的声明,那么aClass类同样可以访问该类的private成员。
这有一个例子:
- class Node
- {
- private:
- int data;
- int key;
- // ...
- friend class BinaryTree; // class BinaryTree can now access data directly
- };
- class BinaryTree
- {
- private:
- Node *root;
- int find(int key);
- };
- int BinaryTree::find(int key)
- {
- // check root for NULL...
- if(root->key == key)
- {
- // no need to go through an accessor function
- return root->data;
- }
- // perform rest of find
- }
Friend Functions(友元函数)
友元函数和友元类的作用是一样的,它允许一个函数不需要通过其public接口就能够访问到类中的private和protected成员变量。你可以这样去声明:
friend return_type class_name::function(args);这里有一个例子:
class Node { private: int data; int key; // ... friend int BinaryTree::find(); // Only BinaryTree's find function has access};
这样find方法就可以直接访问Node中的私有成员变量了,而BinaryTree中的其他的方法去不能够直接的访问Node的成员变量。(这就是友元类和友元函数的区别)
转载出处:http://blog.csdn.net/andy_yf/article/details/7062347
1 0
- c++-类的友元
- c++【友元】的一些用法
- [C++]友元关系的继承性
- C++:友元3(复数的加法)
- C ++友元的浅析(一)
- C++(一)友元
- [C++]友元学习
- [c++]友元函数
- [c++] 友元详解
- 【C++】友元函数
- c++:友元函数
- C++:友元函数
- C++:友元
- C/C++ 友元
- 【C++】友元函数
- C++:友元
- C++----友元
- 【C++】C++友元
- 反射2
- ef更新部分字段
- 输出字符串中的所有重复子
- c++智能指针
- java数据结构和算法 栈表队列2
- c++的友元
- 数据库数据处理性能提升技术
- 管理后台-前端-AngularJS
- C++ for 与while循环的区别
- vim 替换成 换行
- PackageManagerService概述
- ios开发必备第三方库
- 10大数据面试最常问的问题
- iOS每日一记----------密码输入工具 InputPasswordView