虚基类的简单应用【C++程序设计】

C++多继承中的虚基类及其应用 本文探讨了C++中类的多继承问题,特别是虚基类的概念及其在解决多重继承中成员函数和数据成员访问冲突的应用。通过具体代码示例和程序执行结果,分析了如何通过虚基类机制确保派生类中只保留基类成员的唯一副本,以及如何在多重继承中避免成员重复。同时,文章也简要介绍了高斯消元法用于解线性方程的基本原理,并通过程序示例演示了该方法的应用。 阅读详情

C++编译系统只执行最后的派生类对虚基类的构造函数的调用,而忽略虚基类的其他派生类对虚基类的构造函数的调用,这就保证了虚基类的数据成员不会被多次初始化。

/*多重继承派生类-虚基类*/
#include <iostream>
#include <string>
#include <iomanip>
using  namespace std;
class Person//基类-人
{
public:
	Person(int nian, string xing)//带参数构造函数,nian-年龄,xing-性别
	{
		age = nian;
		sex = xing;
	}
protected:
	int age;
	string sex;
};

class Teacher:virtual public Person//派生类-老师
{
public:
	Teacher(int nian, string xing, int bianhao, string zhichen) :Person(nian, xing)
	{
		num = bianhao;
		titl = zhichen;
	}
protected:
	int num;
	string titl;
};
class Student:virtual public Person//派生类-学生
{
public:
	Student(int nian, string xing, int fenshu) :Person(nian, xing)
	{
		sorce = fenshu;
	}
protected:
	int sorce;
};

class Graduate:public Teacher,public Student//派生类-在职研究生
{
public:
	Graduate(int nian, string xing,int bianhao,string zhichen,int fenshu, int jintie) :Person(nian, xing), Teacher(nian, xing,bianhao, zhichen), Student(nian,xing,fenshu), wage(jintie){}
	void print();
private:
	int wage;
	
};
void Graduate::print()
{
	cout << age << setw(10) << sex << setw(10) << num << setw(10) << titl << setw(10)<< sorce << setw(10) << wage << setw(10) << endl;
}
int main()//主函数
{
	Graduate zhou(25,"man",2018,"xuesheng",99,500);//初始化
	zhou.print();
	system("pause");
	return 0;
}

 

虚基类c++程序 使用vc6.0编写的关于虚基类的程序的cpp文件,文件来自某大学的大一c++课堂练习 立即下载

相关推荐

虚基类的应用

虚基类的简单应用 这是平时的一个简单的代码 是自己写着玩的东西

【虚基类、虚函数及应用】

虚基类(virtualbaseclass)定义方式如下class派生类名virtual访问限定符基类类名{…};class派生类名访问限定符virtual基类类名{…};

lmy347771232的博客 3635

虚基类的使用实例

在各类中分别增加以下成员: base1中增加私有数据成员int b1 base2中增加私有数据成员int b2 level1中增加私有数据成员int l1 level2中增加私有数据成员int l2 toplevel中增加私有数据成员int t

C++中虚基类用法

C++ 中的虚基类是一种特殊的继承关系,它使得派生类可以有多个基类实例,而非单一实例。可以在类的继承列表前加上 "virtual" 关键字来声明一个虚基类。 例如: class A {}; class B: virtual public A {}; class C: virtual public A {}; class D: public B, public C {}; 在这个例子中,类 D 是...

weixin_35749796的博客 576

教师信息管理 ~ 学校作业

c语言学习初级阶段 愿所有初学者努力学习~

使用继承的方法构造3个类,(即雇员类——虚基类,教师类和工人类——派生类),教师教师工资由基本工资+级别工资+工龄工资+课时工资构成;工人工资由基本工资+级别工资+工龄工资+奖励工资构成

本次课程设计的题目是设计一个职工工资管理系统,编写的主要内容如下: (1) 建立职工信息数据,包括职工编号、姓名、性别、合计工资、出生时间、参加工作时间和年龄(计算得到)。 (2) 根据职工信息表,建立只含有姓名和年龄的职工信息简表。 (3) 使用继承的方法构造3个类,(即雇员类——虚基类,教师类和工人类——派生类),教师教师工资由基本工资+级别工资+工龄工资+课时工资构成;工人工资由基本工资+级别工资+工龄工资+奖励工资构成 (4) 编写同名display()成员函数,用来职工信息的内容。 (5) 按年龄输出此年龄段教师信息。 (6) 对“<<”和“>>”运算进行重载。 (7) 抽取并计算职工的平均年龄。 (8) 按姓名检索并输出检索信息 (9) 编写文件操作函数,存储教师和工人信息 (10) 编写链表类模板,分别建立教师和和工人链表

虚基类的简单使用实例

由一个抽象基类Shape派生出来5个派生类,并使用指向基类的指针数组分别调用派生类的成员函数。分析了一些小的细节,爱上代码,从细小出开始,分享一些写代码过程中的小技巧,希望大家会喜欢,程序比较简单, 适合刚学习C++多态性的小伙伴,也希望能认识那些真心喜欢代码的人,能够一起学习。

qq_55872721的博客 1753

海康工业相机 Could not find module MvCameraControl.dll(已解决)

【代码】海康摄像机 Could not find module MvCameraControl.dll(已解决)

hmbbpdx的博客 2223

C++对象模型(11)-- 虚基类

虚基类的介绍及其对象布局。

1192

SAP CO模块实战:成本中心会计分割结构配置全流程(OKES事务码详解)

本文详细解析了SAP CO模块中成本中心会计分割结构的配置全流程,重点讲解了OKES事务码的实战操作。内容涵盖分割结构的概念理解、配置前的次级成本要素与作业类型主数据准备,并通过步骤拆解演示了如何定义分割结构、规则与版本,以及如何将配置关联到成本中心并执行分割。最后提供了常见问题排查与优化建议,旨在帮助顾问及财务人员掌握成本精确分摊的关键配置,确保期末成本核算的准确性。

embedding5hiker的博客 805

ComfyUI节点流实战:用Wan2.1制作电商短视频全流程(附人物/商品模板)

本文提供了一份详尽的ComfyUI实战教程,指导用户如何利用通义万相Wan2.1图生视频模型,高效制作适用于抖音等平台的电商短视频。内容涵盖从环境部署、核心工作流搭建,到针对服装、3C数码等品类的高级提示词模板与参数调优,旨在帮助电商从业者快速生成高质量、高保真商品展示视频,显著提升内容生产效率。

potato的博客 1281

c++ 虚基类应用

多重继承存在二义性,为了消除二义性在访问相同名称的属性时需要加上类名,加以区分。虽然这样可以解决二义性,但是相同的属性出现在多个基类中,为了解决数据冗余,c++引入了虚基类。   虚基类定义:class 派生类名: virtual 继承方式 基类名   初始化 /* 如果在虚基类中定义了带参数的构造函数,而且没 有定义默认构造函数,则在其所有派生类(包括直 接派生或间接派...

anwenzhao0749的博客 452

Altium Designer操作技巧(12)——如何进行邮票孔拼版?

【摘要】本文详细介绍了PCB设计中邮票孔拼板的全流程操作方法。首先解释了邮票孔拼板的定义、核心目的(提高贴片效率、方便生产)和适用场景(异形板、V-CUT无法实现的情况)。重点阐述了关键设计参数,包括孔径、数量、间隙等规范要求,并提供了两种具体操作方案:传统复制粘贴法和新版阵列放置法。文章通过图文详细演示了从PCB复制、邮票孔添加、板框定义到定位孔和Mark点设置的完整步骤,最后强调了对称性、非金属化孔等设计要点,以及需要与板厂确认工艺参数等注意事项。

u012526819的博客 1677

【C++面向对象程序设计】CH5 继承与派生(续)——虚基类

继承与派生(续)——虚基类介绍

m0_72318954的博客 1666

统信UOS下获取root权限的两种姿势:图形化开启开发者模式 vs 命令行直接提权

本文详细解析了统信UOS下获取root权限的两种方法:通过图形界面永久开启开发者模式和使用命令行临时提权。开发者模式适合系统级开发,提供完整root权限但降低安全性;临时提权则更灵活,适合日常管理任务。文章还对比了两种方案的优缺点,帮助用户根据需求选择最佳权限管理策略。

weixin_30266885的博客 515

Modkit

Nmod- 通过过滤器分类为具有指定碱基修饰的残基的调用数量。Ncanonical- 通过过滤器分类为未修饰的碱基的调用数量。确切的碱基必须通过修饰代码推断。例如,如果修饰代码是m(5mC),则未修饰的碱基是胞嘧啶。如果修饰代码是a,则未修饰的碱基是腺苷。Nother mod- 通过过滤器分类为修饰的调用数量,但修饰不同于列出的碱基(且相应的未修饰碱基相同)。例如,对于给定的胞嘧啶,可能有 3 个读取带有h调用,1 个带有未修饰调用,2 个带有m调用。在h的 bedMethyl 行中,N。

生物信息学 1265

C++:虚基类详解

 今天学习多继承时,遇到二义性的问题,然后找到了回答很详细的博客,下面是转载内容 C++虚基类详解 1、虚基类的作用从上面的介绍可知:如果一个派生类有多个直接基类,而这些直接基类又有一个共同的基类,则在最终的派生类中会保留该间接共同基类数据成员的多份同名成员。 在引用这些同名的成员时,必须在派生类对象名后增加直接基类名,以避免产生二义性,使其惟一地标识一个成员,如    

杜恒其的博客 1034

RH850从0搭建Autosar开发环境【7】- Davinci Configurator之CanTp模块配置详解(上)

RH850从0搭建Autosar开发环境【7】- Davinci Configurator之CanTp模块配置详解(上)

weixin_42412049的博客 2297

C++中的虚基类

我们知道类具有三大特性:封装、继承和多态。继承,可以在现有类的功能上进一步扩展,而无需在构建新的类。但有时多重继承会使结构变得复杂,不注意的话还会引起二义性。其中比较典型的一个案例: class A { public: int a; }; class B: public A {}; class C: public A {}; class D: public B, public C {};那么此

Cutemonkey_Fan的专栏 485

AI智能体面试实战与真题解析: 312+道面试题完整答案 (下篇)

本文覆盖220道基础八股文+92道项目面试题,涵盖Agent架构、RAG、工具调用、记忆系统、多智能体、大模型基础、工程化实践、Prompt工程9大模块,含完整代码实现和模拟面试剧本。

program哲学 301

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

C++虚基类

1、虚基类的作用从上面的介绍可知:如果一个派生类有多个直接基类,而这些直接基类又有一个共同的基类,则在最终的派生类中会保留该间接共同基类数据成员的多份同名成员。 在引用这些同名的成员时,必须在派生类对象名后增加直接基类名,以避免产生二义性,使其惟一地标识一个成员,如     c1.A::display( )。 在一个类中保留间接共同基类的多份同名成员,这种现象是人们不希望出现的。C++提

huiliang_1的专栏 365

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

谭浩强《C++程序设计》学习

C++标签(空格分隔): 编程 不要把面向对象和基于过程对立起来,面向对象和基于过程不是矛盾的,而是各有用途、互为补充的。 学习C++,既要学会利用C++进行基于过程的结构化程序设计,也要会利用C++进行面向对象的程序设计。 目录1C 目录1 C语言与C之间的区别 一C基于过程的程序设计2 1简单程序实例 2C程序的实现过程 3变量 1 变量基础 2 局部变量与全局变量 3 变量的存储类别 4 变量

zdh1995的博客 8999

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

大学c++复习谭浩强《C++程序设计》第三版

c++复习 ,教材谭浩强《C++程序设计》第三版(以防你们需要这本书的电子版,特意上传到了蓝奏云),这本书好多小错误,而且有些不符合现在的语法,容易编译错误有点烦,但是谭浩强讲的确实很通俗易懂,因为我是自学,虽然已经买了郑莉的书,但是谭浩强的更易懂。下面是我照着抄的代码,作为记录,方便自己复习。 第九章 怎样使用类和对象 友元 #include<iostream> using namespace std; //提前引用声明 class date; class time { publ.

weixin_44717047的博客 5421

《C++ 程序设计》第 2 章:C++ 语言简单程序设计

《C++程序设计基础入门》摘要 本文系统介绍了C++程序设计的核心基础知识。首先讲解了C++语言的发展历程和特点,包括其面向对象特性和高效性。然后详细阐述了基本数据类型(整型、浮点型、字符型)、变量、常量以及运算符的使用方法。在输入输出方面,重点介绍了cin/cout流对象和格式控制技巧。文章还深入讲解了三大程序控制结构(顺序、选择、循环)及其嵌套使用,并通过实例演示了条件判断和循环的应用。此外,还探讨了类型别名与推断、变量内存机制等进阶内容。最后通过思维导图总结了本章知识体系,为后续面向对象编程学习奠定基

2302_80961196的博客 1289

【C++学习笔记】虚基类

文章目录0x00 前言0x01 虚基类 0x00 前言 文章中的文字可能存在语法错误以及标点错误,请谅解; 如果在文章中发现代码错误或其它问题请告知,感谢! 本文档为个人边学习边记录的C++笔记,非教程,笔记中会存在引用他人文章内容的部分,被引用的原文不会被特殊标记出来,但会在参考文档中给出原文链接。 0x01 虚基类 当某类部分或全部直接基类是从另一个共同基类派生而来时,在这些直接基类中从上一级共同基类继承来的成员就有相同的名称。在派生类对象中,这些同名数据成员在内存中同时拥有多个副本,同一个函数名会有多

C/C++攻城狮 449
上一篇: 例题:建立一个对象数组,内放5个学生的数据(学号、成绩),用指针指向数组首元素,输出第1,3,5个学生的数据。【面向对象设计】
下一篇: 嵌入式软件工程师【面经:第一部分-C语言基础】
蓝莓派Alex
博客等级 码龄15年 147粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值