C++中的友元的体会
来源:互联网 发布:冲淘宝客 编辑:程序博客网 时间:2024/04/29 19:54
友元:假设A中声明了B是我的朋友,则在B内就可以使用了我(A)的一切数据,包括private类型数据。
友元的出现破坏了类的封装和隐藏性。
C++中的友元分为:友元函数和友元类
1. 友元函数:
在类中声明,在类外定义:
class A
{
public: A(int i):m_i(i){}
private:
friend void print(Aa);
int m_i;
};
void print(A a)
{
cout<<a.m_i<<endl;
}
也可以在类中定义:
class A
{
public: A(int i):m_i(i){}
private:
friend void print(Aa)
{
cout<<a.m_i<<endl;
//cout<<m_i<<endl; error
}
int m_i;
};
注意:
1> 友元函数只是普通的外部函数,它不属于任何类。所以即使在类内定义它也不能直接访问类中的东西,必须通过对象访问。
2> 友元函数在类中的位置是任意的。在private和在public是没有区别的。
2. 友元类
当类A中声明类B是我的友元时,则在类B内,所有成员函数都是类A的友元函数,也就是说所有成员函数都可以访问类A的一切资料。(同理通过A的对象访问)
class A
{
public: A(int i):m_i(i){}
private:
friend class B;
int m_i;
};
class B
{
public:
void print(constA& a)
{
cout<<a.m_i<<endl;
}
};
需要注意的几点:
(1) 友元关系不能被继承。
(2) 友元关系是单向的,不具有交换性。若类B是类A的友元,类A不一定是类B的友元,要看在类中是否有相应的声明。
(3) 友元关系不具有传递性。若类B是类A的友元,类C是B的友元,类C不一定是类A的友元,同样要看类中是否有相应的申明
其实友元就可以翻译成朋友更好理解。同英语friend。
- C++中的友元的体会
- 体会友元函数
- 【C++】关于C++中的友元函数的总结
- 考C的体会.
- c的体会
- 学c的体会
- 第六周(体会友元函数)
- c++-类的友元
- 【C】指针的个人体会!!!
- 体会中的体会
- C++中的友元函数的总结
- C++中的友元函数的总结
- C++中的友元函数的总结
- C++中的友元函数的总结
- c++【友元】的一些用法
- [C++]友元关系的继承性
- C++:友元3(复数的加法)
- C ++友元的浅析(一)
- js实现千位分隔符 保留两位小数
- cocos2d-html5学习笔记(七)--Action
- delphi xe6中怎么获取汉字的GB码?
- 月经不调的产生和预防
- 《蜀道难》 李白
- C++中的友元的体会
- JAVA学习笔记-容器
- ios常用的正则表达式
- cocos2d-html5教程之重要概念
- A、B、C、D四个人,要在夜里过一座桥,时间问题
- Java多线程之wait(),notify(),notifyAll()
- 查询一个字符串中出现最多的一个字符
- 解析JDK 7的Garbage-First收集器
- oracle 强制删除指定schema及相关的所有数据库的对象