声明:
在类中用 friend class 友元类名;
作用:
在友元类的所有成员函数都可以访问此类中的所有数据
格式:
- class 友元类名 ;//向前声明本类
- class 拥有友元类的类名{....};//拥有友元类的类的定义
- class 友元类名 {…}//友元的定义
特点:
- 友元关系不能被继承
- 友元关系是单向的,不具有交换性.若类B是类A的友元,类A不一定是类B的友元,要看在类中是否有相应的声明.
- 友元关系不具有传递性.若类B是类A的友元,类C是B的友元,类C不一定是类A的友元,同样要看类中是否有相应的申明
例子:
class B; //友元类的向前声明 class A //拥有友元类的类的定义 { int y; public: A() { y=4; } friend B; }; class B //友元类的定义 { public: void show(A &a) { cout<<a.y<<endl; } };
多个类包含一个友元类:
class C; //友元类的向前声明 class A //拥有友元类的类的定义 { int x; public: A() { x=4; } friend C; }; class B //拥有友元类的类的定义 { int y; public: B() { y=6; } friend C; }; class C //友元类的定义 { public: void show(A &a,B &b) { cout<<a.x<<" "<<b.y<<endl; } }; void func() { A a; B b; C c; c.show(a,b); }
一个类包含多个个友元类:
class B; //友元类向前声明 class C; //友元类向前声明 class A //拥有友元类的定义 { int x; public: A() { x=4; } friend C; friend B; }; class B //友元类的定义 { public: void show(A &a) { cout<<"the value of a is: "<<a.x<<" (in the class B)"<<endl; } }; class C //友元类的定义 { public: void show(A &a) { cout<<"the value of a is: "<<a.x<<" (in the class C)"<<endl; } }; void func() { A a; B b; C c; b.show(a); c.show(a); }
相关推荐
如何声明和创建友元类 简单友元类的声明,C++中友元类的应用范围
简单的友元类,简单的测试了友元函数与友元类,属于概念性的测试
用vc++友元类程序的编写。程序用vc++6.0开发,其中关于年月份的判断相对前面,程序简单易懂。
友元是一种类与类外数据共享的机制,包括友元函数、友元成员、友元类三种
本文档详细介绍了C++友元函数及友元类,方便大家对比学习
简单的友元类使用,自己编的c++程序,可以作为模板。
一个类A声明为一个类B的友元类之后,类A就可以任意访问类B的。。。
私有成员只能在类的成员函数内部访问,如果想在别处访问对象的私有成员,只能通过类提供的接口(成员函数)间接地进行。这固然能够带来数据隐藏的好处,利于将来程序的扩充,但也会增加程序书写的麻烦。
关于c+模板之友元类友元函数的实例化,图形界面之矩形。
友元函数和友元类的需要:类具有封装和信息隐藏的特性。只有类的成员函数才能访问类的私有成员,程序中的其他函数是无法访问私有成员的。非成员函数可以访问类中的公有成员,但是如果将数据成员都定义为公有的,这又...
类做友元类
c++ demo,全局友元类的实现
c++ demo,友元类的实现
C++友元函数和友元类的学习心得[归纳].pdf
友元类的代码事例,直接copy就可以编译
主要介绍了C++ 中友元函数与友元类详解的相关资料,需要的朋友可以参考下
主要讲解c++种的友元类友元函数 可以更好地学习其中的内容 友元在类中担任着十分关键的角色 所以更应该认真学习
主要介绍了C++编程中的友元函数和友元类,属于较为冷僻的知识,在实际开发中较少使用,需要的朋友可以参考下
把谭书上的例子写了一下,有空就看看。从例子中就可以看出它的一些原理。
声明为友元函数的一般形式为:friend<数据类型><友元函数名>(参数表);举例1普通函数作为类的友元函数//x,y 坐标public://声明为Point的