关于C++中友元类和友元函数的示例讲解
来源:互联网 发布:mac上的win7系统 编辑:程序博客网 时间:2024/04/30 23:49
简单的讲 :把类外部的类或函数声明为友元类和友元函数,使其能直接访问类中的私有成员。
格式: friend 类 或 函数 声明
//此语句可以放在类中的任意位置,与访问权限保留字无关。
需要注意几个方面:
1.友元关系是不可以传递的。
比方说你是我的友元而Joe是你的友元,但这并不意味着Joe是我的友元。
2.友元关系不能继承。
3.友元关系不是互通。
把class A设置为class B的友元并不会使得class B成为class A的友元,也许你愿意把你的秘密告诉我,但是,这并不意味着我愿意把我的秘密告诉你。
具体的用法详细见下面的示例:
#include <cstdlib>
#include <iostream>
using namespace std;
class Radius
{
friend class Circle; //声明Circle为Radius的友元类
friend void Show_r(Radius &n); //声明Show_r为友元函数
public:
Radius(int x)
{
r = x;
}
~Radius()
{
}
private:
int r;
};
void Show_r(Radius &n)
{
cout<<"圆的半径为: "<<n.r<<endl; //调用Radius对象的私有成员变量r
}
class Circle
{
public:
Circle()
{
}
~Circle()
{
}
double area(Radius a)
{
s = a.r * a.r * 3.1415926; //调用Radius对象的私有成员变量r
return s;
}
private:
double s;
};
int main(int argc, char *argv[])
{
Radius objRadius(9);
Circle objCircle;
Show_r(objRadius);
cout<<"面积为:"<<objCircle.area(objRadius)<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
#include <iostream>
using namespace std;
class Radius
{
friend class Circle; //声明Circle为Radius的友元类
friend void Show_r(Radius &n); //声明Show_r为友元函数
public:
Radius(int x)
{
r = x;
}
~Radius()
{
}
private:
int r;
};
void Show_r(Radius &n)
{
cout<<"圆的半径为: "<<n.r<<endl; //调用Radius对象的私有成员变量r
}
class Circle
{
public:
Circle()
{
}
~Circle()
{
}
double area(Radius a)
{
s = a.r * a.r * 3.1415926; //调用Radius对象的私有成员变量r
return s;
}
private:
double s;
};
int main(int argc, char *argv[])
{
Radius objRadius(9);
Circle objCircle;
Show_r(objRadius);
cout<<"面积为:"<<objCircle.area(objRadius)<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
- 关于C++中友元类和友元函数的示例讲解
- 关于C++中友元类和友元函数的示例讲解
- C++中友元类和友元函数的示例讲解
- 【C++】关于C++中的友元函数的总结
- 友元函数 和 友元类 讲解和使用
- C++友元函数讲解
- 关于友元函数和友元类
- 【C++】友元类和友元函数(转)
- C++: 友元函数和友元类详解
- 关于友元函数
- 关于友元函数
- 关于友元函数
- 关于友元函数
- 关于友元函数的简单代码
- 关于 友元函数 的 种种
- 关于友元函数的总结
- [c++]友元函数
- 【C++】友元函数
- 为了研究而玩:游戏分析的方法
- using namespace std
- 电子
- ANSI C++特征总结
- 几个常用js 函数!
- 关于C++中友元类和友元函数的示例讲解
- 关于.Net框架下3D游戏的设计与实现——1,引言
- web的基础知识
- ls只显示目录名
- Jquery 1.2.1 源代码研究 (进行中)
- Berkeley DB 和关系型数据库的比较(1)
- 简单常识——关于string
- 关于main函数的返回值
- Lesson one hundred twenty one The man in a hat.