c++|虚基类之构造函数填空

虚基类之构造函数填空

试题描述

请仔细阅读,补充下面代码中的空白。

相关阅读

c++|类改错B
c++|继承改错B
c++|典型运算符重载之集合类填空
c++|虚基类之构造函数填空
c++|类静态成员之英雄类
c++|纯虚函数之再谈星际争霸

//必要的头文件等,可能为多条语句//基类A类
{//保护成员
      int a;//公有成员//带有一个参数a1的构造函数(且参数有默认值10),在初始化列表中使用a1的值初始化数据成员a,函数体内没有语句
};//从虚基类A公有派生B类
{//保护成员
      int b;//公有成员//带有两个参数a1、b1的构造函数(参数默认值分别为100、20),在初始化列表中调用基类A的构造函数,再将b1的值赋给数据成员b,函数体内没有语句
};//从虚基类A公有派生C类
{//保护成员
      int c;//公有成员//带有两个参数a1、c1的构造函数(参数默认值分别为1000、30),在初始化列表中调用基类A的构造函数,再将c1的值赋给数据成员c,函数体内没有语句
};//类D由B类和C类公有派生
{//公有成员//带有三个参数a1、b1、c1的构造函数(参数默认值分别为10000、20000、30000),在初始化列表中依次调用基类A、B和C的构造函数,函数体内没有语句
      void Show() const //输出数据成员
      {
         cout << "a=" << a << endl;
         cout << "b=" << b << endl;
         cout << "c=" << c << endl;
      }
};
int main()
{
   int x, y, z;
   cin >> x >> y >> z;
   D obj1; //创建派生类D对象obj1
   D obj2(x, y, z); //创建派生类D对象obj2
   obj1.Show();
   obj2.Show();
   return 0;
}

注意:1.请务必提交完整的程序代码,不要修改代码框架。2.请不要修改试题描述中的所有标识符,注意大小写敏感。

输入

输入三个正数,相邻项之间以空格隔开。

输出

依据题意输出若干行。

输入示例

1 2 3

输出示例

a=10000
b=20000
c=30000
a=1
b=2
c=3

数据范围

输入为int范围的整数

#include 
#include 
using namespace std;
class A{
protected:
    int a;
public:
    A(int a1 = 0):a(a1){

    }

};
class B: virtual public A{
protected:
    int b;
public:
    B(int a1 = 100, int b1 = 20):A(a1),b(b1){}
};
class C: virtual public A{
protected:
    int c;
public:
    C(int a1 = 1000, int c1 = 30):A(a1),c(c1){}
};
class D:public B,public C{
public:
    D(int a1 = 10000,int b1 = 20000, int c1 = 30000):A(a1),B(a1,b1),C(a1,c1){}
    void Show() const{
    cout << "a=" << a << endl;
         cout << "b=" << b << endl;
         cout << "c=" << c << endl;
    }

};
int main()
{
   int x, y, z;
   cin << x << y << z;
   D obj1;	//创建派生类D对象obj1
   D obj2(x, y, z); //创建派生类D对象obj2
   obj1.Show();
   obj2.Show();
   return 0;
}

你可能感兴趣的:(C++,c++,类,多态)