c++ 友元类 与 友元类派生类
定义:
当一个类B成为了另外一个类A的“朋友”时,那么类A的私有和保护的数据成员就可以被类B访问。我们就把类B叫做类A的友元。
用法:
在A类中加入:
friend class B;
下面这个程序说明了友元类与友元派生类的权限。
class A {
public:
   friend class FriendA;
private:
    int a;
};
class FriendA {
public:
    void print(A& ca) { //因为是友元类,所以可以访问A类的私有成员。
        ca.a = ;
        std::cout << ca.a << std::endl;
    }
};
class FriendA1 : public FriendA {
public:
    void print1(A& ca) { //编译错误,继承后新定义的函数并不带有友元性质。
        ca.a = ;
        std::cout << ca.a << std::endl;
    }
};
int main() {
    A a;
    FriendA fa;
    fa.print(a);
    FriendA1 fa1;
    fa1.print(a);//父类的该函数为友元函数。
    //fa1.print1(a);
    return ;
}
//总结,也就是声明友元类时,友元类中所有的函数变为了友元函数。 而后面派生新加的函数则不为友元函数。
//重写函数、虚函数也不行。
c++ 友元类 与 友元类派生类的更多相关文章
- C++_派生类的构造函数及派生类和基类之间的特殊关系
		派生类和基类的概念及派生类构造函数的原理: 创建一个叫做TableTennisPlayer的基类,记录会员的名字和是否有球桌. //声明一个基类 class TableTennisPlayer { p ... 
- YTU 2636: B3 指向基类的指针访问派生类的成员函数
		2636: B3 指向基类的指针访问派生类的成员函数 时间限制: 1 Sec 内存限制: 128 MB 提交: 433 解决: 141 题目描述 领导类(Leader)和工程师类(Engineer ... 
- C++类继承--基类new和用派生类new的区别
		实际上无论是用基类还是派生类New, 结果是一样的: #include <stdio.h> class Base { public: int a; Base(){ a=0; } virtu ... 
- boost::serialization 用基类指针转存派生类(错误多多,一波三折)
		boost::serialization 也支持c++的多态,这样我们就能够通过使用基类的指针来转存派生类, 我们接着上一篇( boost::serialization(2)序列化基类 )的样例来看: ... 
- 基类的两个派生类再派生一个派生类 用virtual避免二义性
		class vehicle{ int MaxSpeed; int Weight;public: vehicle(int maxspeed, int weight) :MaxSpeed(maxspeed ... 
- 【转载】C++中的基类与派生类
		转自:http://www.cnblogs.com/sujz/articles/2044365.html 派生类的继承方式总结: 继承方式 说明 public 基类的public和protected的 ... 
- [C++]类的继承与派生
		继承性是面向对象程序设计的第二大特性,它允许在既有类的基础上创建新类,新类可以继承既有类的数据成员和成员函数,可以添加自己特有的数据成员和成员函数,还可以对既有类中的成员函数重新定义.利用类的继承和派 ... 
- Chapter15:派生类
		在C++语言中,基类将类型相关的函数与派生类不做改变直接继承的函数区别对待,对于某些函数,基类希望它的派生类各自定义适合自身的版本,此时基类就将这些函数声明为虚函数. 派生类必须将其继承而来的成员函数 ... 
- C++中的基类与派生类
		派生类的继承方式总结: 继承方式 说明 public 基类的public和protected的成员被派生类继承后,保持原来的状态 private 基类的public和protected的成员被派生类继 ... 
- c++ 派生类向基类转换的可访问性
		对于c++面向对象一直很疑惑,这次决定下功夫把它弄明白 一.派生类和基类之间的类型转换 首先理解,派生类含有基类的所有成分,只不过有些就算在派生类的成员函数也不能访问而已. (1)派生类和基类的自动转 ... 
随机推荐
- 模式识别之bayes---bayes 简单天气预测实现实例
			Bayes Classifier 分类 在模式识别的实际应用中,贝叶斯方法绝非就是post正比于prior*likelihood这个公式这么简单,一般而言我们都会用正态分布拟合likelihood来实 ... 
- (转)常见LCD接口
			LCD常用接口原理 点击打开链接 点击打开链接 点击打开链接 点击打开链接 点击打开链接 点击打开链接 点击打开链接 点击打开链接 xubin 平台信息:内核:linux2.6/linux3.0系统: ... 
- js以类似jquery的模式绑定事件
			<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ... 
- javascript对数据处理
			数组去重 法一: // 遍历数组,建立新数组,利用indexOf判断是否存在于新数组中,不存在则push到新数组,最后返回新数组 function unique(ar) { var ret = []; ... 
- 【转】Spring Boot干货系列:常用属性汇总
			转自Spring Boot干货系列:常用属性汇总 附录A.常用应用程序属性 摘自:http://docs.spring.io/spring-boot/docs/current/reference/ht ... 
- Linux 找不到php.ini
			在部署环境中利用phpinfo()查看,显示php.ini 路径为/usr/local/php5/lib 但是到对应路径中,找不到php.ini文件,在网上找到相关方法,留下备注. Configura ... 
- fopen flock  fclose 文件用法
			fopen函数是用来打开文件或者连接 若成功,则返回 true.若失败,则返回 false. fopen打开连接是不能直接输出的 使用: <?php $file = fopen("te ... 
- SSH上传和下载文件
			备个份: 一,ssh上传文件 scp file username@hostIP:文件地址 例: [zhangy@BlackGhost ~]$ scp test.sql zhangying@192.16 ... 
- TV和BTV(全变分和双边全变分)
			TV:Total Variation BTV:Bilateral Total Variation Osher等在1992 年提出了总变分(TV)超分辨率重建方法,该方法能够有效地去除噪声和消除模糊,但 ... 
- mysql中参数low_case_table_name的使用?不同参数值的设置有什么影响?
			需求描述: 今天一个同事问,在mysql中,默认的表名是大小写区分的吗,默认是什么设置, 如果要设置成大小写不区分的改怎么设置,是否需要进行重启.然后就进行了查询, 对于lower_case_tabl ... 
