博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++友元(Friend)简介
阅读量:5885 次
发布时间:2019-06-19

本文共 1100 字,大约阅读时间需要 3 分钟。

相对Java而言,友元是C++中特有的一种元素,再加上《C++ Primer》也并没有太具体的样例,所以刚接触这个概念的时候懵了非常久,即是自己总结一下,也希望能帮到大家,以下来讲讲友元的使用方法和一些注意的地方。

操作:

1)在MyFriend类中,将Father类定义成友元

2)写一个Son类继承自Father类

3)在Father类和Son类的构造函数中分别创建MyFriend对象,并定义其内部的三个变量

4)在MyFriend类的构造函数中创建Father对象。并定义其内部的三个变量

结果:

1)Father类中创建的MyFriend对象同意直接訪问MyFriend类中全部变量

2)Son类中创建的MyFriend对象仅仅同意直接訪问MyFriend类中Public变量

3)由第二点可知,友元关系无法继承

4)MyFriend类中创建的Father对象仅仅同意直接訪问Father类中的Public变量

5)由第四点可知,友元关系是单向的。即A为B友元,B并非A的友元。须要另外单独定义

MyFriend.h

#include "Father.h"class MyFriend{    friend class Quote; //友元类直接这样定义就OK了public:    MyFriend(){        Father *p = new Father();        p->var1 = 1;        p->var2 = 1;        p->var3 = 1;    }    int var1;protected:    int var2;private:    int var3;};

Father.h

#include "MyFriend.h"class Father{public:   Father(){        MyFriend *p = new MyFriend();        p->var1 = 1;        p->var2 = 1;        p->var3 = 1;    };    int var1;protected:    int var2;private:    int var3;}

Son.h

#include "MyFriend.h"class Son : Father{   Son(){        MyFriend *p = new MyFriend();        p->var1 = 1;        p->var2 = 1;        p->var3 = 1;    };}

转载地址:http://eklix.baihongyu.com/

你可能感兴趣的文章
.net中单选按钮RadioButton,RadioButtonList 以及纯Html中radio的用法实例?
查看>>
[转]Oracle如何实现创建数据库、备份数据库及数据导出导入的一条龙操作
查看>>
(hdu 简单题 128道)平方和与立方和(求一个区间的立方和和平方和)
查看>>
Linux中下载,压缩,解压等命令
查看>>
在Linux命令行下发送html格式的邮件
查看>>
说说PHP中foreach引用的一个坑
查看>>
基于express框架的应用程序骨架生成器介绍
查看>>
Spring学习11-Spring使用proxool连接池 管理数据源
查看>>
2016第6周五
查看>>
ASP.NET 免费开源控件
查看>>
面向对象葵花宝典阅读思维导图(二)
查看>>
volatile关键字与线程间通信
查看>>
优秀大数据GitHub项目一览
查看>>
WPF 窗体显示最前端
查看>>
tit.Atitit. http 代理原理 atiHttpProxy 大木马 h
查看>>
TCP/IP详解学习笔记(8)-DNS域名系统
查看>>
WPF 之 布局(一)
查看>>
Wireshark设置interface 时提示“There are no interfaces on which a capture can be done ”
查看>>
Android Studio使用SVN,与eclipse共同开发。
查看>>
iOS图片上传及压缩
查看>>