void main() { CDerive d(6,4); d.print(); CBase b(5); b.print(); } ②
#include
class CDerive:public CBase {
public: void print() { CBase::print(); cout<<\ } private: int b; };
void main()
{ CDerive d; d.print(); CBase b; b.print(); }
2. 理解下面的程序并运行,然后回答后面的问题。 #include\class CBase {
public: CBase(int a) :a(a) { cout<<\ } ~CBase() { cout<<\ } void print() { cout<<\ } protected: int a; };
class CDerive:public CBase {
public: CDerive(int a,int b,int c) :CBase(a),b(b),c(c) { cout<<\ } ~CDerive()
{ cout<<\ } void print() { CBase::print(); cout<<\ cout<<\ } private: CBase b; int c; };
void main() { CDerive d(1,2,3); d.print(); }
问题一:以上程序的输出结果是什么,为什么? 答:输出结果是
原因是 基类和派生类中构造函数和析构函数的执行顺序。 问题二:①处语句执行完后,d.b.a的值为多少? 答:值为1。
实验六 派生与继承—多基派生
6.1 实验目的
1. 理解多基派生的定义;
2. 基派生中的构造函数与析构函数的调用顺序; 3. 理解多基派生中虚基类的作用。
6.2实验内容
6.2.1 程序阅读
1. 理解下面的程序并运行,然后回答后面的问题。 class CBase1 {
public: CBase1(int a) :a(a) { cout<<\ } ~CBase1() { cout<<\ } void print() { cout<<\ } protected: int a; };
class CBase2 {
public: