在下面一段类的定义中,自行车类的虚基类为车辆类,机动车类的虚基类也为车辆类,摩托车类的基类为自行车类和机动车类,类之间均为公有继承,如图所示。
(1)根据上面各类间关系的描述,补全下面程序段中空缺的代码;
(2)实现程序中声明的成员函数,注意相应操作中的动作发生的条件不能满足时应给出提示。
(3)运行程序,享受开摩托的过程。
(4)在报告中,请用自己的话写清楚使用虚基类解决什么问题?
...
分类:
其他好文 时间:
2015-05-29 18:12:57
阅读次数:
184
问题及代码:
#include
using namespace std;
class Base
{
public:
Base(char i)
{
cout<<"Base constructor. --"<<i<<endl;
}
};
class Derived1:virtual public Base //虚基类
{
pub...
分类:
其他好文 时间:
2015-05-27 10:06:02
阅读次数:
121
在下面一段类的定义中,自行车类的虚基类为车辆类,机动车类的虚基类也为车辆类,摩托车类的基类为自行车类和机动车类,类之间均为公有继承,如图所示。
下载可执行文件链接http://pan.baidu.com/s/1ntodu9z
(1)根据上面各类间关系的描述,补全下面程序段中空缺的代码;
(2)实现程序中声明的成员函数,注意相应操作中的动作发生的条件不能满足时应给出提示。
(3)运行程序,享...
分类:
其他好文 时间:
2015-05-25 14:38:23
阅读次数:
133
问题描述:
在下面一段类的定义中,自行车类的虚基类为车辆类,机动车类的虚基类也为车辆类,摩托车类的基类为自行车类和机动车类,类之间均为公有继承,如图所示。
下载可执行文件链接motorcar.exe.
(1)根据上面各类间关系的描述,补全下面程序段中空缺的代码;
(2)实现程序中声明的成员函数,注意相应操作中的动作发生的条件不能满足时应给出提示。
(3)运行程序,享受开摩托的过程。(...
分类:
其他好文 时间:
2015-05-20 22:33:01
阅读次数:
185
如果一个派生类有多个直接基类,而这些直接基类又有一个共同的基类,则在最终的派生类中会保留该间接共同基类数据成员的多份同名成员。
C++提供虚基类(virtual base class)的方法,使得在继承间接共同基类时只保留一份成员。下面举例说明:
在如下的图中:
Person类是Student和Teacher的基类,而Graduate类又继承自Student和Teacher类。
如果使用...
分类:
编程语言 时间:
2015-05-16 23:28:00
阅读次数:
343
C++虚继承概念:
Virtual Inheritance 虚继承,解决从不同途径继承来的同名数据成员在内存中不同的数据拷贝导致的数据不一致问题,将共同的基类设置为虚基类。这时从不同路径继承来的数据成员在内存中只有一份拷贝,同名函数也只有一个映射。语法:
Class C:virtual public A,virtual public B,…,virtual public n
{}
执行顺序...
分类:
编程语言 时间:
2015-05-15 17:44:55
阅读次数:
182
上一篇中我给各位说了一般人认为C++中较为难的东西——指针。其实对于C++,难点当然不局限在指针这玩意儿上,还有一些有趣的概念,如模板类、虚基类、纯虚函数等,这些都是概念性的东西,几乎每一本C++书上都会介绍,而平时我们除了会接触到纯虚函数外,其他的不多用。纯虚函数,你可以认为与C#中的抽象方法或接...
//探究类派生时构造函数的顺序
//在派生类对象的创建中,首先是虚基类的构造函数并按它们声明的顺序构造。
//第二批是非虚基类的构造函数按它们声明的顺序调用。
//第三批是成员对象的构造函数。最后是派生类自己的构造函数被调用
#include
using namespace std;
class B
{
public:
B()
{
cout<<"B"<<endl;
}
int x;...
分类:
编程语言 时间:
2015-05-13 10:40:14
阅读次数:
109
刚开始看沉思录,觉得太枯燥。到了第八章,作者关于面向对象问题的分析,我follow书上的设计开发,理解了一些以前只是在书上看到的概念。
给自己做几点注解吧:
1.虚基类用来表达所有的继承类的共有特点,在这个例子中,所有的继承类都要有输出和求值计算,所以我们把这两个函数定义为虚函数。
2.虚基类必须至少含有一个纯虚函数。该纯虚函数可以定义也可以不定义。
3.我们要保证由虚基类派生出来的类的对...
分类:
编程语言 时间:
2015-04-22 14:03:05
阅读次数:
190
#include using namespace std;class stream{public: stream(){cout<<"stream constructer"<<endl; ~stream(){cout<<"stream destructer"<<endl;};class iistr.....
分类:
其他好文 时间:
2015-04-18 12:46:06
阅读次数:
120