下面我们来看一段代码 , 看看我们是如何利用友元来访问类的一切成员的:
#include <IOStream> using namespace std; class Internet { public: Internet(char *name,char *address) // 改为:internet(const char *name , const char *address){ strcpy(Internet::name,name); strcpy(Internet::address,address); } friend void ShowN(Internet &obj); //友元函数的声明 public:// 改为:privatechar name[20]; char address[20]; }; void ShowN(Internet &obj) //类外普通函数定义 , 访问a对象的保护成员name,不能写成,void Internet::ShowN(Internet &obj) { cout<<obj.name<<endl; //可访问internet类中的成员} void main() { Internet a("谷歌","http://www.google.cn/";); ShowN(a); cin.get(); } 示例2:
分别定义一个类A和类B , 各有一个私有整数成员变量通过构造函数初始化;类A有一个成员函数Show(B &b)用来打印A和B的私有成员变量 , 请分别通过友元函数和友元类来实现此功能 。使用友元类 和 友元函数实现:
#include <iostream>using namespace std;class B;class A;void Show( A& , B& );class B{private:int tt;friend class A;friend void Show( A& , B& );public:B( int temp = 100):tt ( temp ){}};class A{private:int value;friend void Show( A& , B& );public:A(int temp = 200 ):value ( temp ){}void Show( B &b ){ cout << value << endl; cout << b.tt << endl; }};void Show( A& a, B& b ){cout << a.value << endl;cout << b .tt << endl;}int main(){A a;B b;a.Show( b );Show( a, b ); return 0;}
推荐阅读
- pointer-like class C++|封装裸指针为像指针的类
- C++list的使用总结及常用list操作
- 10分钟学习函数式Python
- C++ 环境设置
- c++之流媒体传输--Live555源码解读
- 架构师大神带你读懂C++
- 详解mysql三大时间函数
- 三分钟,学会几个Excel函数公式
- C++用户界面开发框架Qt 6.x入门级指南 - Qt着色器工具
- C++常用内置函数