友元的问题
来源:互联网 发布:python学习手册 编辑:程序博客网 时间:2024/04/25 05:17
今天看了下友元,发现友元其实就和其名一样,如果想让哪个外部函数或者类访问本类中的私有封装数据,就将其设为友元。
由于C++中的封装原则,封装在类内部的私有数据外部函数不能访问,如果要访问就需利用本函数中的公有函数进行访问,但是调用函数需要开销,影响效率,因此如果想在不影响效率的情况下对类中的公有数据进行访问,就需要使用友元了。
程序如下:
#include <stdlib.h>
#include <iostream.h>
class ho_class
{
friend class gu_class;
private:
int a,b;
public:
ho_class();
};
class gu_class
{
public:
void manage_one(ho_class &m);
void manage_two(ho_class &n);
};
void gu_class::manage_one(ho_class &mm)
{
cout <<"the before data is/n";
cout << mm.a <<"/t" << mm.b <<"/n";
mm.a=mm.a+1;
mm.b=mm.b+1;
cout << mm.a <<"/t" << mm.b <<"/n";
}
void gu_class::manage_two(ho_class &nn)
{
cout <<"the before data is/n";
cout << nn.a <<"/t" << nn.b <<"/n";
nn.a=nn.a+1;
nn.b=nn.b+1;
cout << nn.a <<"/t" << nn.b <<"/n";
}
ho_class::ho_class()
{
a=0;
b=0;
}
main()
{
ho_class ho;
gu_class gu;
gu.manage_one(ho);
gu.manage_two(ho);
}
需要注意的是,友元并不是本类中的函数,因此在声明友元的时候,不要将友元放在public,private和protected下,另外在定义该友元函数的时候如果是全局函数前面不要有类名。
- 友元的问题
- thinking in c++ 读书笔记---友元函数的一个问题
- 关于友元函数的跨平台问题
- vc6.0 中关于友元的一个问题
- 友元类与友元函数的继承与传递问题
- VC6.0对友元的支持问题
- 友元类与友元函数的继承与传递问题
- 一个关于友元和继承的问题
- 友元类与友元函数的继承与传递问题
- 探索友元的继承和传递问题
- 滥用友元产生的第一个问题
- 滥用友元产生的第二个问题
- 在类模板中使用友元函数的问题
- 友元函数模板问题
- C++中的友元问题
- ACM-5元和10元的经典问题
- 类的友元
- 友元的使用
- bat memo
- 基于JMS的数据汇集系统的研究与实现
- Windows 多显示器下的编程
- 几种STL容器的基本用法[资料]
- JavaScript常用检测脚本实例代码
- 友元的问题
- 人工神经网络简介
- Windows® CE 系统中的同步机制
- asp.net2.0:扩展ImageButton控件定制自己需要的功能
- c# 中的tostring
- Portal學習--頁面生成原理
- 自绘按钮的实现
- 程序员成功之路
- asp.net 2.0 将文字转成图片(文字生成图片)