当前位置: 首页 > news >正文

java友元类_C++友元(Friend)用法实例简介

相对于Java而言,友元是C++中特有的一种元素,很多教材上对其介绍的相对较少,因此初学的时候往往不能很快掌握,本文总结了友元的用法和一些注意的地方,供大家参考借鉴。希望能对初学C++的朋友起到一点帮助作用。

操作步骤:

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;

};

}

感兴趣的读者可以调试运行一下本文实例,相信会有新的收获。

相关文章:

  • java form array_Java中数组操作 java.util.Arrays 类常用方法的使用
  • java类名的作用_java下Class.forName的作用是什么,为什么要使用它?
  • Java同步问题_Java中的同步问题
  • ubuntu php 编译安装mysql_ubuntu 8.04 编译安装 php mysql apache
  • java 构造器 this_Java 类的构造器中this()和super()的困惑
  • java为什么输入else错误_java – 我遇到了一个错误问题,我正在使用“else if”语句....
  • java antlr sql_ANTLR SQL解析器代码
  • java cms gc_G1,CMS及PARALLEL GC的比较
  • java以class开头_JAVA基础:从.class文件中寻找类名
  • Java 习题6 参考答案及解析_java期末复习题答案及解析
  • 猜字小游戏java方法体_java实现猜字小游戏
  • java游戏开发包_LWJGL
  • java的人patch方法_java – 如何在CXF中使用PATCH方法
  • java func_Java通过匿名类来实现回调函数实例总结
  • Java关系表达式x y_Java正则逻辑运算符[X|Y]匹配
  • 《Javascript数据结构和算法》笔记-「字典和散列表」
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • iOS小技巧之UIImagePickerController实现头像选择
  • JavaScript对象详解
  • MySQL QA
  • Python打包系统简单入门
  • vue 配置sass、scss全局变量
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 聚类分析——Kmeans
  • Nginx实现动静分离
  • 阿里云服务器购买完整流程
  • 数据库巡检项
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • # centos7下FFmpeg环境部署记录
  • #传输# #传输数据判断#
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • $refs 、$nextTic、动态组件、name的使用
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (十六)一篇文章学会Java的常用API
  • (转)Linux下编译安装log4cxx
  • .NET DevOps 接入指南 | 1. GitLab 安装
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .NetCore部署微服务(二)
  • .Net各种迷惑命名解释
  • .NET正则基础之——正则委托
  • /ThinkPHP/Library/Think/Storage/Driver/File.class.php  LINE: 48
  • @Autowired多个相同类型bean装配问题
  • @ConfigurationProperties注解对数据的自动封装
  • @JoinTable会自动删除关联表的数据
  • @vue/cli 3.x+引入jQuery
  • [ C++ ] STL_list 使用及其模拟实现
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(朱雀组)
  • [100天算法】-不同路径 III(day 73)
  • [8-23]知识梳理:文件系统、Bash基础特性、目录管理、文件管理、文本查看编辑处理...
  • [Angular] 笔记 9:list/detail 页面以及@Output
  • [AR]Vumark(下一代条形码)
  • [BT]BUUCTF刷题第8天(3.26)
  • [bzoj1324]Exca王者之剑_最小割
  • [ComfyUI进阶教程] animatediff视频提示词书写要点