C语言和C++中的虚基类的作用是什么
发表于:2025-11-13 作者:千家信息网编辑
千家信息网最后更新 2025年11月13日,这篇文章主要介绍"C语言和C++中的虚基类的作用是什么",在日常操作中,相信很多人在C语言和C++中的虚基类的作用是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"C
千家信息网最后更新 2025年11月13日C语言和C++中的虚基类的作用是什么
这篇文章主要介绍"C语言和C++中的虚基类的作用是什么",在日常操作中,相信很多人在C语言和C++中的虚基类的作用是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"C语言和C++中的虚基类的作用是什么"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
目录
概述
多重继承的问题
虚基类
初始化
例子
概述
虚基类 (virtual base class) 是用关键字 virtual 声明继承的父类.
多重继承的问题
N 类:
class N {public: int a; void display(){ cout << "A::a=" << a <A 类:
class A : public N {public: int a1;};B 类:
class B : public N {public: int a2;};C 类:
class C: public A, public B{public: int a3; void display() {cout << "a3=" << a3 << endl;};};main:
int main() { C c1; // 合法访问 c1.A::a = 3; c1.A::display(); return 0;}输出结果:
A::a=3
存在的问题:
A::a 和 B::a 是 N 类成员的拷贝
A::a 和 B::a 占用不同的空间

虚基类
我们希望继承间接共同基类时只保留一份成员, 所以虚基类就诞生了. 当基类通过多条派生路径被一个派生类继承时, 该派生类只继承该基类一次.
语法:
class 派生类名: virtual 继承方式 基类名
初始化
通过构造函数的初始化表对虚拟类进行初始化. 例如:
N 类:
class N {public: int n; N(int n) : n(n) {};};A 类:
class A : virtual public N {public: A(int n) : N(n) {};};B 类:
class B : virtual public N {public: B(int n) : N(n) {};};C 类:
class C: public A, public B{public: C(int n) : N(n), A(n), B(n){};};例子
Person 类:
#ifndef PROJECT5_PERSON_H#define PROJECT5_PERSON_H#include #include using namespace std;class Person {protected: string name; char gender;public: Person(string n, char g) : name(n), gender(g) {} void display() { cout << "name: " << name << endl; cout << "gender: " << gender << endl; }};#endif //PROJECT5_PERSON_H
Student 类:
#ifndef PROJECT5_STUDENT_H#define PROJECT5_STUDENT_H#include #include "Person.h"using namespace std;class Student : virtual public Person {protected: double score;public: Student(string n, char g, double s) : Person(n, g), score(s) {};};#endif //PROJECT5_STUDENT_H
Teacher 类:
#ifndef PROJECT5_TEACHER_H#define PROJECT5_TEACHER_H#include #include "Person.h"using namespace std;class Teacher : virtual public Person {protected: string title;public: Teacher(string n, char g, string t) : Person(n, g), title(t) {};};#endif //PROJECT5_TEACHER_H
Graduate 类:
#ifndef PROJECT5_GRADUATE_H#define PROJECT5_GRADUATE_H#include "Teacher.h"#include "Student.h"#include using namespace std;class Graduate : public Teacher, public Student{private: double wage;public: Graduate(string n, char g, double s, string t, double w) : Person(n, g), Student(n, g, s), Teacher(n, g, t), wage(w) {}; void display() { Person::display(); cout << "score: " << score << endl; cout << "title: " << title << endl; cout << "wages: " << wage << endl; };};#endif //PROJECT5_GRADUATE_H
main:
#include #include "Graduate.h"using namespace std;int main() { Graduate grad1("小白",'f',89.5,"教授",1234.5); grad1.display(); return 0;}
输出结果:
name: 小白
gender: f
score: 89.5
title: 教授
wages: 1234.5
到此,关于"C语言和C++中的虚基类的作用是什么"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
作用
语言
C++
问题
学习
例子
成员
教授
更多
类名
结果
小白
帮助
输出
不同
合法
实用
接下来
关键
关键字
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
虚拟机服务器ip无法连接
用什么软件开发一款app
计算机网络技术 文理
r软件如何做数据库的合并
网络安全监察大队电话
4200 监控数据库
软件开发外包账务
服务器租用一年多少钱
美图手机无服务器
滨湖区重型软件开发项目信息
数据库mysql原理
计算机四级 数据库
如何测试服务器并发
网络安全课读后评论
汽车电子网络安全大会
软件开发过程最终审查
如何加强网络安全管理PPT
腾讯云服务器天源迪科
北京火山动力网络技术
刺激战场比赛服务器哪个好
网络数据库技术支持
网络安全法哪年实行
c 服务器开发 招聘
数据库连接超时设置
网络安全传输协议
网络安全方面证
steam选服务器吗
网络安全教育ppt命名
平谷区品质软件开发设计价格走势
如何取消服务器安全狗认证