C++入门经典-例8.6-多重继承的构造顺序

1:单一继承是先调用基类的构造函数,然后调用派生类的构造函数,但多重继承将如何调用构造函数呢?多重继承中的基类构造函数被调用的顺序以派生表中声明的顺序为准。派生表就是多重继承定义中继承方式后面的内容,调用顺序就是按照基类名标识符的前后顺序进行的。

2:代码如下:

// 8.6.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
using namespace std;
class CBicycle
{
public:
    CBicycle()
    {
        cout << "Bicycle Construct" << endl;
    }
    CBicycle(int iWeight)
    {
        m_iWeight=iWeight;
    }
    void Run()
    {
        cout << "Bicycle Run" << endl;
    }

protected:
    int m_iWeight;
};

class CAirplane
{
public:
    CAirplane()
    {
        cout << "Airplane Construct " << endl;
    };
    CAirplane(int iWeight)
    {
        m_iWeight=iWeight;
    }
    void Fly()
    {
        cout << "Airplane Fly " << endl;
    }

protected:
    int m_iWeight;
};

class CAirBicycle : public CBicycle, public CAirplane
{
public:
    CAirBicycle()
    {
        cout << "CAirBicycle Construct" << endl;
    }
    void RunFly()
    {
        cout << "Run and Fly" << endl;
    }
};
void main()
{
    CAirBicycle ab;
    ab.RunFly();
}

运行结果:

时间: 2024-10-11 22:48:26

C++入门经典-例8.6-多重继承的构造顺序的相关文章

C++入门经典-例6.12-使用数组地址将二维数组输出

1:以a[4][3]为例 a代表二维数组的地址,通过指针运算符可以获取数组中的元素 (1)a+n代表第n行的首地址 (2)&a[0][0]既可以看作第0行0列的首地址,同样也可以被看作是二维数组的首地址.&a[m][n]就是第m行n列元素的地址 (3)&a[0]是第0行的首地址,当然&a[n]就是第n行的首地址 (4)a[0]+(n-1)表示第0行第n个元素 (5)*(*(a+n)+m)表示第n行第m列 (6)*(a[n]+m)表示第n行第m列元素 2:代码如下: // 6

C++入门经典-例7.9-对象数组,批量化生产

1:在数组内容中我们了解到,数组是通过指针分配到的一段额定大小的内容.同样,数组也可以包含对象.声明对象数组的形式如下: box boxArray[5]; box boxArray2[2]={box(1,1,1),box(2,2,2)}; box boxArray3[3]={3,styleBox}; 值得注意的是,第一种申请对象数组的方法必须保证类中含有默认的够好函数,否则编译器将会报错.同样,可以通过对象指针申请动态数组.例如: box* box; pbox=new box[n];//n为整数

C++入门经典-例7.3-析构函数的调用

1:析构函数的名称标识符就是在类名标识符前面加"~".例如: ~CPerson(); 2:实例代码: (1)title.h #include <string>//title是一个类,此为构造了一个类 #include <iostream> using std::string; class title{ public: title(string str);//这是一个构造函数 title();//这是一个无参构造函数 ~title();//这就是一个析构函数,执行

C++入门经典-例3.5-判断某一年是否是闰年之嵌套判断

1:代码如下: // 3.5.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace std; void main() { int iYear; cout << "请输入年份" << endl; cin >> iYear; if(iYear%4==0) { if(iYear%100==0) { if(iYear%40

C++入门经典-例2.15-逗号表达式的应用

1:代码如下: // 2.15.cpp : 定义控制台应用程序的入口点. #include "stdafx.h" #include<iostream> using namespace std; void main() { int a=4,b=6,c=8,res1,res2; res1=a,res2=b+c; for(int i=0,j=0;i<2;i++) { printf("y=%d,x=%d\n",res1,res2); } } 运行结果:

C++入门经典-例3.4-根据成绩划分等级

1:代码如下: // 3.4.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace std; void main() { cout<<"输入成绩"<<endl; int iInput; cin >> iInput; if(iInput>=90) { cout << "优秀" &

C++入门经典-例6.5-连接字符串

1:运行代码如下: // 6.5.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> using std::cout; using std::endl; using std::cin; void main() { char str1[30],str2[20]; cout<<"请输入数组1:"<< endl; cin>>str1; cout<

C++入门经典-例6.20-修改string字符串的单个字符

1:使用+可以将两个string 字符串连接起来.同时,string还支持标准输入输出函数.代码如下: // 6.20.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> #include <string> using namespace std; int main() { string str1 = "您好,"; string str2; cout<<&

C++入门经典-例3.2-根据分数判断是否优秀

1:代码如下: // 3.2.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace std; void main() { int iInput; cout<<"大于90为优秀成绩"<<endl; cout<<"请输入学生成绩"<<endl; cin >> iInput;