子类调用父类中的友元函数

2023-05-16

由于友元函数并非类成员,因此不能被继承在某种需求下,可能希望子类的友元函数能够使用父类中的友元函数为此可以通过强制类型转换,将子类的指针或是引用强转为父类的引用或是指针,然后使用转换后的引用或是指针来调用基类中的友元函数。

#include "stdafx.h"
#include <iostream>
using namespace std;

class Student
{
public:
	Student(int a, int b) :_a(a), _b(b){}
	friend ostream &operator<<(ostream & out, Student & stu);

private:
	int _a;
	int _b;
};


ostream &operator<<(ostream & out, Student & stu)
{
	out << stu._a << "--" << stu._b << endl;
	return out;
}


class Graduate :public Student
{
public:
	Graduate(int a, int b, int c) :Student(a, b), _c(c){}
	friend ostream &operator<<(ostream & out, Graduate & gra);

private:
	int _c;
};


ostream &operator<<(ostream & out, Graduate & gra)
{
	cout << static_cast<Student&>(gra); 
	//友元函数不能被继承,需要转化为父类类型,然后调用其中的友元函数
	//如果不强制转化的话 参数匹配的函数还是它自己产生递归 系统崩溃
	cout <<"--"<< gra._c; 
	return out;
}



int _tmain(int argc, _TCHAR* argv[])
{
	Student s(1,2);
	cout << s ;

	Graduate g(3, 4, 5); 
	//没有自己的<<重载函数时 赋值兼容 g赋值给了Student & st 
	//赋给了父类的类型 所以才能访问父类的私有成员
	cout << g ;

	return 0;
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

子类调用父类中的友元函数 的相关文章

  • PTA 7-20 表达式转换 (25分)

    算术表达式有前缀表示法 中缀表示法和后缀表示法等形式 日常使用的算术表达式是采用中缀表示法 xff0c 即二元运算符位于两个运算数中间 请设计程序将中缀表达式转换为后缀表达式 输入格式 输入在一行中给出不含空格的中缀表达式 xff0c 可包
  • Template Mode(模板方法)

    结构化程序 程序库开发人员 class Library public void step1 void step3 void step5 应用程序开发人员 class Application piblic bool Step2 bool St
  • Strategy 模式

    enum TaxBase CN Tax US Tax DE Tax class SaleOrder TaxBase tax public if tax 61 61 CN Tax else if tax 61 61 US Tax else i
  • 观察者模式

    在软件的构建过程中 xff0c 我们需要为某些对象建立一种通知依赖关系 一个对象 xff08 目标对象 xff09 发生改变 所有的依赖对象 xff08 观察者对象 xff09 都将得到通知 xff0c 如果依赖关系过于紧密 xff0c 将
  • matlab数据分类 画直方图

    我是刚刚接触matlab的小白 xff0c 在度娘和广大网友的帮助下终于完成了这个小任务 所以想记录下 xff0c 也希望可以帮助那些学习matlab的人 小任务 xff1a 主要对txt文本里的数据 进行处理下 xff0c 然后通过mat
  • 树莓派跑一个简单c++小程序教程

    我用的是树莓派3代b型 xff0c 所使用的是Debian系统的衍生系统raspbian 对系统不太了解不清楚 树莓派开发c 43 43 程序需要的工具有编辑器vim 调试器gdb 编译器gcc或者g 43 43 xff08 大神飘过就行
  • typedef 函数指针用法

    进入正文 xff1a 代码简化 促进跨平台开发的目的 typedef 行为有点像 define 宏 xff0c 用其实际类型替代同义字 不同点 xff1a typedef 在编译时被解释 xff0c 因此让编译器来应付超越预处理器能力的文本
  • 关于红外相机热成像相机的一些sdk使用方法

    将红外热成像相机转化成c格式 xff0c 从而用opencv进行显示 先看一些开发手册的函数 定义一个函数指针 typedef long CBF IR long lData long lParam CBF IR pCBFframe 相机接口
  • opencv显示图像并转换成灰度图(c++) day1

    include lt opencv2 opencv hpp gt include lt iostream gt using namespace cv int main Mat src 61 imread 34 aa jpg 34 Mat g
  • 古典问题(兔子生崽):有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少对

    基础不夯实 xff0c 工作两行泪 include lt stdio h gt int main 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 1 2 3 5 8 13 21 34 int m 61
  • 如果你还在用STM32F103,那么你OUT了

    自从ARM公司2007年首推出Cortex内核 xff0c ST凭借基于ARM CORTEX M3内核的STM32F1 xff0c 无疑成为了最大的赢家之一 特别是STM32F103系列 xff0c 更是成为市场上最通用的MCU系列之一 不
  • 瑞芯微RK1808开发板之进入系统

    参照RK1808 EVB用户指南 V10 20181226 pdf用户指南配置 文档获取地址https github com rockchip linux docs tree master SoC 20platform 20related
  • 瑞芯微RK1808编译rknn_demo

    操作步骤在ubuntu16 04下编译 官方给的sdk里的rknn demo不能直接编译 缺少一些动态链接库 xff0c 还需要完善一些CMakeLists txt内容 首先在rknn demo下新建一个build 进入 build文件夹下
  • libcurl在嵌入式设备C 的使用

    libcurl在嵌入式设备C 的使用 bingqingsuimeng的专栏 CSDN博客 linux configure prefix 61 root work code curl 7 61 1 curl linux disable sha
  • 某些项目因位于工作空间目录中而被隐藏

    今天晚上突然想建一个小项目 xff0c 建在了F project projectname 建完后发现项目并没有导入到Eclipse中 xff0c 于是又自己重新导入 xff0c 导入到最后一步就报了如题错误 在网上找了下原因 按照这篇博客h
  • C++关于文件检索的源码转译技巧(R"()"方式)

    在C C 43 43 编写代码的过程中 xff0c 经常会用到检索文件路径的时候 xff0c 首先要明确一点 xff0c 由于 符号是C C 43 43 的保留符号 xff0c 因此直接粘贴路径字符串在代码中是不能使用的 例如下面的方法 x
  • 嵌入式课程 之 中断和串口通信实验

    版权归如下公司 xff0c 禁止非授权转载 xff1a 北京西普阳光教育科技股份有限公司 xff08 https www simpleware com cn xff09 维周机器人科技有限公司 xff08 http www vejoe co
  • Linux系统tcp连接设置

    目录 net ipv4 tcp syn retriesnet ipv4 ip local port rangenet core somaxconnnet ipv4 tcp max syn backlognet core netdev max
  • 一种简单有效的锂电池充电均衡电路

    一种简单有效的锂电池充电均衡电路 这个均衡电路用的是三个一模一样的并联稳压电路组成的 xff0c 每个电池上并一个 电路原理图如下 xff1a 每个稳压电源都调节到4 2V 均衡的原理是 xff0c 当电池电压都小于4 2V时 xff0c
  • 【嵌入式开发工具】Makefile和Cmake

    工具配置 首先 xff0c 方便代码编辑 xff0c 安装sublime和vim xff0c 其中安装sublime过程见下 https blog csdn net yunna520 article details 114021153 注意

随机推荐

  • Arduino Uno PWM和IRremote库冲突问题

    问题发生环境 xff1a Arduino UNO R3控制板 xff0c 用两个L298N驱动板驱动4轮小车 xff0c 然后通过控制4路PWM来控制4个轮子的速度 xff0c 遥控方式为红外遥控 xff0c 使用的红外库是IRremote
  • [ERROR] 两个jar包中存在Qualified Name完全相同的引用冲突问题 解决方案

    分析 最近在搞Jedis xff0c 在引入jedis 2 9 0 jar和commons pool2 2 4 2 jar后初始化JedisPoolConfig时 xff0c 发现很多属性无法设置 xff08 如最大空闲连接等 xff09
  • 如何使用Visual studio C++(VC++)编译C?图解,详!!!

    如何使用Visual studio C 43 43 xff08 VC 43 43 xff09 编译C xff1f 图解 xff0c 详 xff01 xff01 xff01 之前在网上找过关于这方面的东西 xff0c 但是一直都没有看到有详细
  • 头文件与类的声明

    我们在开始学习C 43 43 时 xff0c 就应该养成规范大气的编程习惯 xff0c 头文件 header 的布局就是其中很重要的一个点 我们需要知道头文件中的防卫式声明 ifndef COMPLEX define COMPLEX 前置声
  • ubuntu C++ 和windows C# socket TCP通信

    TCP客户端代码 windows C https www cnblogs com sunev archive 2012 08 05 2604189 html using System using System Net using Syste
  • 多进程和多线程的优缺点

    在Linux下编程多用多进程编程少用多线程编程 IBM有个家伙做了个测试 xff0c 发现切换线程context的时候 xff0c windows比linux快一倍多 进出最快的锁 xff08 windows2k的 critical sec
  • 【C语言】链表及单链表基本操作

    1 什么是链表 xff1f 链表的分类 xff1f 链表是一种物理存储结构上非连续 非顺序的存储结构 xff0c 数据元素的逻辑顺序是通过链表中的指针链接次序实现的 数据结构中 xff1a 2 链表的分类 共有8种链表结构 3 单链表的基本
  • 14串聚合物锂电池保护板和电路图(带均衡功能)

    转载自 xff1a http bbs mydigit cn read php tid 61 746827 之前发过14串三元锂组装的帖子 xff0c 有坛友对保护板感兴趣 xff0c 还有的说串联充电 xff0c 早死早超生 xff0c 哈
  • HTTP的长连接和短连接

    一 什么是长连接 HTTP1 1规定了默认保持长连接 xff08 HTTP persistent connection xff0c 也有翻译为持久连接 xff09 xff0c 数据传输完成了保持TCP连接不断开 xff08 不发RST包 不
  • libcurl库的异步用法

    multi接口的使用会比easy 接口稍微复杂点 xff0c 毕竟multi接口是依赖easy接口的 xff0c 首先粗略的讲下其使用流程 xff1a curl multi init初始化一个multi curl对象 xff0c 为了同时进
  • 在ubantu16.04 配置ROS开发realsense435功能包

    本文主要对intel的一款实感相机realsense435 进行配置 xff0c 将ROS对realsense435支持的功能包进行安装 一 安装SDK 1 简要介绍 鉴于自己安装过程中出现的问题 xff0c 现在在安装之前先确认几件事情
  • 提高C++程序运行效率,减少运行时间的方法

    大致方法 xff1a 1 优化业务逻辑 xff0c 尽量少做事情 2 减少网络访问 xff0c IO等对外操作 3 如果有数据库 xff0c 优化SQL和数据库结构 4 优化算法 xff0c 比如冒泡排序改成快排等 5 优化代码的编写 这个
  • 常量引用、非常量引用、临时对象

    转载自 xff1a https www cnblogs com littleant archive 2012 08 01 2618846 html https www cnblogs com BensonLaur p 5234555 htm
  • 字符串string中“\0“与‘\0‘的打印、拼接问题

    1 34 0 34 为字符串长度为0的字符串指针 xff0c 它与 34 34 等价 2 打印 34 0 34 与 39 0 39 相同 xff0c cout输出时都会显示为空 39 0 39 在string的初始化和拼接中size大小的不
  • Direct3D的初始化

    1 获取接口IDirect3D9 的指针 xff0c 该接口用于获取系统中物理硬件设备的信息并创建接口IDirect3DDevice9 xff0c 该接口是一个C 43 43 对象 xff0c 代表了我们用来显示3D图形的物理硬件设备 使用
  • 绘制流水线

    顶点结构与顶点格式 在Direct3D中 xff0c 顶点除了包含空间信息外 xff0c 还可以包含其他的附加属性 xff0c 例如顶点可以有颜色属性 xff0c 也可以有法线属性 xff0c Direct3D赋予了我们自定义顶点格式的自由
  • Direct3D中的绘制

    顶点缓存与索引缓存 一个顶点缓存是一个包含顶点数据的连续内存空间 xff0c 一个索引缓存是一个包含索引数据的连续内存空间 xff0c 之所以使用顶点缓存和索引缓存而非数组来存储数据 xff0c 是因为顶点缓存和索引缓存可以被放置在显存 中
  • 结构体内的指针

    利用 结构体对象 对 结构体内的指针 赋值 include 34 stdafx h 34 include lt string h gt include lt stdlib h gt struct Student char name 从节省空
  • 自制廉价难度低性能较好的锂电充电器(转)

    转载自 xff1a http www geek workshop com thread 53 1 1 html 自制廉价难度低性能较好的锂电充电器 附电压平衡器第一张 电路全图 这张有点模糊 别急 先看大致位置 等一下再分区介绍 这一部份
  • 子类调用父类中的友元函数

    由于友元函数并非类成员 xff0c 因此不能被继承 xff0c 在某种需求下 xff0c 可能希望子类的友元函数能够使用父类中的友元函数 为此可以通过强制类型转换 xff0c 将子类的指针或是引用强转为父类的引用或是指针 xff0c 然后使