第十二周 阅读项目 (4)虚基类多重继承数据理解

<span style="font-size:18px;">/*
*Copyright (c)2014,烟台大学计算机与控制工程学院
*All rights reserved.
*文件名称:d.cpp
*作    者:张旺华
*完成日期:2015年6月1日
*版 本 号:v1.0
*/
#include<iostream>
using namespace std;
class A
{
public:
   int n;
};
class B:virtual public A {};   // class B:virtual public A{};
class C:virtual public A {};   // class C:virtual public A{};
class D:public B,public C
{
public:
    int getn() {return B::n;}//
};
int main()
{
   D d;
   d.B::n=10; //
   d.C::n=20;
   cout<<d.getn()<<endl; //
   return 0;
}
</span>

运行结果:

知识点运用及学习心得:

虚基类派生避免了重载发生的错误,两类多继承同一类,在由这两类为虚基类派生出另一类后,最初的一类自在最后一次调用构造函数。

时间: 2024-12-23 16:24:58

第十二周 阅读项目 (4)虚基类多重继承数据理解的相关文章

第十二周 阅读项目 (5)

阅读下面类的定义,请说出在测试函数中不同情况的调用产生的结果 [cpp] view plaincopyprint? #include <iostream> using namespace std; class A { protected: int a,b; public: A(int aa, int bb):a(aa), b(bb) {} void printA() { cout<<"a: "<<a<<"\tb: "&

第十二周 阅读项目 多重继承中数据关系

<span style="font-size:18px;">/* *Copyright (c)2014,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:d.cpp *作 者:张旺华 *完成日期:2015年6月1日 *版 本 号:v1.0 */ #include<iostream> using namespace std; class A { public: int n; }; class B:public A {}; //

第十二周 阅读程序 虚基类 中的继承

/* *Copyright (c)2014,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:d.cpp *作 者:张旺华 *完成日期:2015年6月1日 *版 本 号:v1.0 */ #include <iostream> using namespace std; class Base { public: Base(char i) { cout<<"Base constructor. --"<<i<<

第十二周阅读程序3:虚基类的构造函数

问题及代码: #include <iostream> using namespace std; class Base { public: Base(char i) { cout<<"Base constructor. --"<<i<<endl; } }; class Derived1:virtual public Base //虚基类 { public: Derived1(char i,char j):Base(i) { cout<

第十二周 【项目2 - 摩托车继承自行车和机动车】

[项目2 - 摩托车继承自行车和机动车] 在下面一段类的定义中,自行车类的虚基类为车辆类,机动车类的虚基类也为车辆类,摩托车类的基类为自行车类和机动车类,类之间均为公有继承,如图所示. 下载可执行文件链接motorcar.exe. (1)根据上面各类间关系的描述,补全下面程序段中空缺的代码: (2)实现程序中声明的成员函数,注意相应操作中的动作发生的条件不能满足时应给出提示. (3)运行程序,享受开摩托的过程.(可以下载可执行文件motorcar.exe,先运行再编程.不必申请驾照,这个摩托车很

第十五周 阅读项目 二进制文件读取

/* *Copyright (c)2014,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:d.cpp *作 者:张旺华 *完成日期:2015年6月3日 *版 本 号:v1.0 */ #include <iostream> #include <fstream> #include <cstdlib> using namespace std; int main( ) { int a; ofstream outfile("f1.

第十五周 阅读项目

2.查看下面程序的输出,解释为什么会有这样的输出. <code class="hljs cpp has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; whi

第十二周阅读程序4:虚拟基类-同名数据成员

问题及代码: (1)程序执行后,运行结果是多少? (2)将程序中有注释的两条语句修改为注释的内容,即将"class B:public A {};"修改为"class B:virtual public A{};","class C:public A {}; "修改为"class C:virtual public A{};",重新编译运行程序,程序的运行结果又是多少? #include<iostream> using

第十二周项目2:摩托车继承自行车和机动车

问题及代码: #include <iostream> #include <conio.h> #include <windows.h> using namespace std; enum vehicleStaus {rest, running}; //车辆状态:泊车.行进 class vehicle //车辆类 { protected: int maxSpeed; //最大车速 int currentSpeed; //当前速度 int weight; //车重 vehic