浅谈C++友元
2015-12-10 20:48
197 查看
友元函数或类用于访问另一个类中的非公有成员(私有和受保护),这是从外部访问类内部非公有成员的唯一方法。下面以友元函数为例进行说明。首先,该函数是属于类外部独立的函数,要想访问类内部非公有成员,就要在类的内部进行友元声明,声明方式就在函数类型之前加friend即可。并且friend不受任何访问说明符(private等)的约束,在哪里都可以声明,但习惯是在所有的访问说明符之前声明友元函数,注意:这个声明仅仅说明可以访问类内部的非公有成员,但对于自身还没有声明,需要在类外部独立的声明该函数,此时声明函数就和普通函数声明一样,不需要加friend。为了使友元对调用该类的用户可见,通常把友元的声明与类本身放置在同一个头文件中。所以,对于类的声明头文件中,在类的内部要声明一次友元,在类的外部要声明一次该函数。顺便说一句,在类内部不是声明成员函数(没有函数体),而是定义成员函数(有函数体)的函数为内联函数,他在执行时就相当于在本地展开(将之看成代码段,而不是函数),而不需要保存寄存器,断点之类的。内联函数必须要小,最多为75行代码。
友元继承:声明类为友元,注意,友元的关系不能被继承,每个类负责控制各自成员的访问权限。当一个类将另一个类声明为友元时,这种关系只对做出声明的类有效,对于该友元类的基类或派生类来说,都不具备特殊的访问能力。
友元继承:声明类为友元,注意,友元的关系不能被继承,每个类负责控制各自成员的访问权限。当一个类将另一个类声明为友元时,这种关系只对做出声明的类有效,对于该友元类的基类或派生类来说,都不具备特殊的访问能力。
相关文章推荐
- C++ using关键字作用总结
- effective c++学习笔记3
- 棋盘覆盖问题、半数集问题算法解析-C语言
- PAT乙级——1007 A除以B (C/C++)
- PAT乙级——1006 部分A+B (C/C++)
- C/C++的64位整型 不同编译器间的比较(附:各类型数据的范围)
- PAT乙级——1005 德才论 (C/C++)
- PAT乙级——1004 福尔摩斯的约会 (C/C++)
- 解决Visual C++ 编译器中混合 .c 文件时收到 C1853 预编译头错误的方法(转)
- PAT乙级——1003 数素数 (C/C++)
- PAT乙级——1002 数字分类 (C/C++)
- PAT乙级——1001 A+B和C (C/C++)
- 设计模式系列(九)命令模式(Command Pattern)
- 64位windows7 C#.net引用VC++ com组件错误80040154的解决方法
- C++11 学习笔记 模板的细节(右尖括号,using,函数模板默认参数)
- C++ stringstream介绍,使用方法与例子
- c语言知识(找出大于2门成绩不及格的学生)
- C/C++学习(五)冒泡排序
- C++primer学习:随机数.
- C语言简单的菜单选项