C语言和C++中的虚基类的作用是什么
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍"C语言和C++中的虚基类的作用是什么",在日常操作中,相信很多人在C语言和C++中的虚基类的作用是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"C
千家信息网最后更新 2026年11月02日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安全错误
数据库的锁怎样保障安全
保险科技 互联网保险
互联网科技公司排名
与互联网科技公司
期待互联网科技
安徽鑫晟辉互联网科技
菲比寻常互联网科技
火传媒上海互联网科技
哈尔滨秒房互联网科技有限公司
贵州叶脉互联网科技有限公司所属行业
互联网校园科技培训
链环科技传统企业怎么转型互联网
健康食品互联网创新科技园项目
威龙国际互联网科技公司
保险科技服务互联网营销体系
互联网金融科技元年
广州有谷有贝互联网科技有限公司
互联网界的黑科技
互联网科技品牌
杭州科技互联网公司有哪些
承德科技产业互联网平台
中国互联网科技股
互联网科技会
万易互联网科技有限公司
奇酷互联网科技公司
南京欣网互联网科技
重庆科技学院互联网
互联网科技公司需要的职位
互联网科技与管理
辽宁互联网新科技
互联网大会出现的黑科技