C++ 虚基类,c++设置虚基类的目的是

C++ 虚基类,c++设置虚基类的目的是,C/C++中虚基类详解及其作用介绍

这篇文章主要介绍了C/C中虚基类的详解及其作用介绍,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

目录

概述多重继承的问题虚基类初始化例子总结

概述

虚基类(虚拟基类)是用关键字虚拟的声明继承的父类。

多重继承的问题

普通类:

普通类

公共:

int a;

空的显示(){

cout ' A:A=' A endl;

}

};

A类:

A类:公共N {

公共:

int a1

};

B类:

B类:公共N {

公共:

int a2

};

C类:

C类:公共A、公共B{

公共:

int a3

void display(){ cout ' a3=' a3 endl;};

};

主要:

int main() {

C c1

//合法访问

c1 .a:a=3;

c1 .a:display();

返回0;

}

输出结果:

A:a=3

存在的问题:

答:答和乙:甲是普通类成员的拷贝

答:答和乙:甲占用不同的空间

虚基类

我们希望继承间接共同基类时只保留一份成员,所以虚基类就诞生了。当基类通过多条派生路径被一个派生类继承时,该派生类只继承该基类一次。

语法:

班级派生类名:虚拟继承方式基类名

初始化

通过构造函数的初始化表对虚拟类进行初始化。例如:

普通类:

普通类

公共:

int n;

n(int n):n(n){ };

};

A类:

A类:虚拟公共N {

公共:

a(int N):N(N){ };

};

B类:

B类:虚拟公共N {

公共:

b(int N):N(N){ };

};

C类:

C类:公共A、公共B{

公共:

C(int n) : N(n),A(n),B(N){ };

};

例子

人类:

#ifndef PROJECT5_PERSON_H

#定义项目5 _人_小时

#包括输入输出流

#包含字符串

使用命名空间标准

类别人员{

受保护:

字符串名称;

茶性别;

公共:

人员(字符串n,字符g):姓名(n),性别(g) {}

空的显示(){

cout ' name:' name endl;

cout ' gender:' gender endl;

}

};

#endif //PROJECT5_PERSON_H

学生类:

#ifndef PROJECT5_STUDENT_H

#定义项目5 _学生_H

#包含字符串

#包含" Person.h "

使用命名空间标准

学生:虚拟公众人物{

受保护:

双倍积分;

公共:

学生(字符串n,字符g,双s):人(n,g),分数(s){ };

};

#endif //PROJECT5_STUDENT_H

教师类:

#ifndef PROJECT5_TEACHER_H

#定义项目5 _教师_H

#包含字符串

#包含" Person.h "

使用命名空间标准

班主任:虚拟公众人物{

受保护:

字符串标题;

公共:

教师(字符串n,字符g,字符串t):人(n,g),头衔(t){ };

};

#endif //PROJECT5_TEACHER_H

毕业类:

#ifndef PROJECT5_GRADUATE_H

#定义项目5 _毕业生_H

#包含"老师. h "

#包含"学生. h "

#包含字符串

使用命名空间标准

毕业班级:公立教师,公立学生{

私人:

双倍工资;

公共:

毕业生(字符串n,字符g,双s,字符串t,双w):人(n,g),学生(名词,名词,名词),老师(n,g,t),工资(w){ };

空的显示(){

person:display();

cout ' score:' score endl;

' cout ' title:' title endl;

cout ' wages:' wage endl;

};

};

#endif //PROJECT5_GRADUATE_H

主要:

#包括输入输出流

#包含" Graduate.h "

使用命名空间标准

int main() {

毕业生梯度1('小白,' f ',89.5 '教授',1234.5);

一年级。显示();

返回0;

}

输出结果:

名称:小白

性别:女

得分:89.5

标题:教授

工资:1234.5英镑

总结

使用多重继承时要十分小心,否则会进场出现二义性问题

不提倡在程序中使用多重继承

只有在比较简单和不易出现二义性的情况或实在必要时才使用多重继承

能用单一继承解决的问题就不要使用多重继承

到此这篇关于C/C中虚基类详解及其作用介绍的文章就介绍到这了,更多相关C虚基类内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • vs2015打包安装程序,vs2015程序打包,VS2022实现VC++打包生成安装文件图文详细历程
  • vc++6.0的快捷键,vc 快捷键
  • vc++6.0的快捷键,vc 快捷键,VC6.0常用快捷键大全
  • 绘制圆角矩形的方法,c++ 画矩形,C#画圆角矩形的方法
  • 懒汉式和饿汉式代码,单列模式懒汉和饿汉,C++单例模式的懒汉模式和饿汉模式详解
  • 好用的C++编译器,c++编译软件哪个好
  • semaphore c#,c++ semaphore
  • semaphore c#,c++ semaphore,C++中Semaphore内核对象用法实例
  • dev-c++使用教程,dev c++安装教程
  • dev-c++使用教程,dev c++安装教程,Dev C++ 安装及使用方法(图文教程)
  • C里面指针常量和常量指针的区别,c++指针常量和常量指针
  • C里面指针常量和常量指针的区别,c++指针常量和常量指针,简单总结C++中指针常量与常量指针的区别
  • com组件初始化失败,c#开发com组件,C++中COM组件初始化方法实例分析
  • c++静态成员变量使用,c++静态成员函数和静态成员变量
  • c++静态成员变量使用,c++静态成员函数和静态成员变量,详解c++ 静态成员变量
  • 留言与评论(共有 条评论)
       
    验证码: