#include "stdafx.h"
#include<iostream>
#include<string>
using namespace std;
class person{//声明基类
protected:
int age;
char sex;
string name;
public:
person(int a,char s,string nam){
age=a;
sex=s;
name=nam;
}
};
class teacher:virtual public person
{
protected:
string title;
public:
teacher(int a,char s,string nam,string t):person(a,s,nam){
title=t;
}
};
class student:virtual public person
{
protected:
float score;
public:
student(int a,char s,string nam,float sc):person(a,s,nam){
score=sc;
}
};
class graduate:public teacher,public student
{
protected:
float wdge;
public:
graduate(int a,char s,string nam,string t,float sc,float wd):person(a,s,nam),teacher(a,s,nam,t),student(a,s,nam,sc){
wdge=wd;
}
void show(){
cout<<name<<endl;
cout<<age<<endl;
cout<<sex<<endl;
cout<<title<<endl;
cout<<score<<endl;
cout<<wdge<<endl;
}
};
int main(){
graduate gr(22,'f',"k;asdjf;daf","klsdaf",89.5,79.5);
gr.show();
return 0;
}
输出结果:
k;asdjf;daf
22
f
klsdaf
89.5
79.5
Press any key to continue
分享到:
相关推荐
在C++编程语言中,虚基类、虚函数成员和虚析构函数是面向对象编程中的关键概念,它们对于理解和实现多态性至关重要。多态性允许我们编写更灵活、可扩展的代码,使得程序能处理多种不同类型的对象。下面将详细解释这...
在C++编程语言中,虚基类的概念是为了处理多重继承带来的二义性问题。当一个类从多个含有共同基类的派生类继承时,如果不使用虚基类,每个派生类都会拥有基类的一个副本,这可能导致重复的成员和访问冲突。通过声明...
虚基类是C++编程语言中的一个核心概念,它在多继承环境中扮演着至关重要的角色。在多继承的类层次结构中,如果一个类被多个子类直接或间接继承,而这个类没有声明为虚基类,那么可能会出现“菱形问题”(Diamond ...
在这个例子中,虽然没有明确地使用虚基类,但理解虚基类的概念仍然非常重要。当一个类从多个基类派生时,如果这些基类又有一个共同的基类,则可以使用虚基类来避免重复继承问题。例如,如果`bicycle`和`motorcar`都...
本人C语言课程设计代码,包含了学生管理系统的所有基本功能,VS2015以上直接运行,代码注释,其中有详细的函数运行解释,很容易看懂
在C++中,多态性主要通过虚函数来实现。然而,C语言不支持面向对象编程,因此要实现类似的功能,必须采用间接和创造性的方式。 在提供的代码示例中,我们看到了一种通过结构体和函数指针来模拟C++中多态性的方法。...
这个话题主要涉及C++的流程控制,特别是与类和虚基类相关的面向对象特性。以下是对"开关控制详细代码"的详细解释: 首先,C++中的switch语句是一种选择结构,用于执行多个可能的代码块之一,基于变量的特定值。它的...
C++ 中基类的析构函数为什么要用 virtual 虚析构函数 C++ 中基类的析构函数为什么要用 virtual 虚析构函数?这是一个非常重要的问题。在 C++ 中,基类的析构函数如果不使用 virtual 虚析构函数,可能会导致内存泄漏...
- 当一个类通过不同的路径继承了同一个基类时,如果不使用虚基类,会导致基类的数据成员在派生类中有多份副本,这称为二义性继承。为了解决这个问题,C++引入了虚基类的概念。 - 定义虚基类使用`virtual`关键字,...
如果虚基类是从非虚基类派生的,仍遵循先基类后派生类的构造顺序,选项D正确。 10. **常成员函数**: - 常成员函数承诺不修改对象的状态,因此在常量上下文中可以调用。选项A正确表示了一个常成员函数的声明。 11...
- 如果派生类有多个虚基类,则按照它们在派生类中声明的顺序依次调用虚基类的构造函数。 - 选项B指出虚基类的构造函数在非虚基类之后调用,这是错误的。 ### 12. 常成员函数声明 - **const修饰符**: - `void ...
在这个系统中,如果`Person`类是`Student`类的基类,同时其他类如`Teacher`也继承自`Person`,那么将`Person`声明为虚基类可以确保只有一个`Person`实例存在,避免了“菱形问题”。 4. **设计模式与结构** 这个...
在C++编程语言中,有一些核心概念...以上内容详细解释了题目中涉及的C++语言的关键概念,包括运算符重载、抽象类、虚函数、继承、虚基类、文件操作、流、格式控制以及友元等。这些知识点构成了C++编程基础的重要部分。
在虚继承部分,文章讨论了虚继承的机制,包括虚函数表和虚基类表的实现机制。文章还讨论了虚函数调用和强制转换到基类的机制。 在异常处理部分,文章讨论了C++中的异常处理机制,包括try-catch块的实现机制和异常...
- 虚方法可以在运行时动态地决定调用哪个版本(基类还是派生类)的方法。 - 使用`virtual`关键字后,不能再同时使用`static`、`abstract`或`override`等修饰符。 #### 二、虚方法与非虚方法的区别 虚方法与非虚...
同样,如果涉及虚基类,所有派生类都需要知道虚基类的存在,也会包含其头文件。 总结来说,类的定义放在头文件中是可以的,但为了避免重复定义和提高编译效率,通常将类的声明放在头文件,实现放在源文件。同时,...