溫馨提示×

C++構造函數如何處理繼承關系

c++
小樊
94
2024-11-09 00:38:28
欄目: 編程語言

在C++中,構造函數處理繼承關系的方式與類成員初始化列表類似。當創建一個派生類對象時,首先會調用基類的構造函數來初始化基類部分,然后調用派生類自己的構造函數來初始化派生類部分。這里有一個簡單的例子來說明構造函數如何處理繼承關系:

#include <iostream>

class Base {
public:
    Base() {
        std::cout << "Base constructor called" << std::endl;
    }
};

class Derived : public Base {
public:
    Derived() {
        std::cout << "Derived constructor called" << std::endl;
    }
};

int main() {
    Derived d; // 調用基類構造函數和派生類構造函數
    return 0;
}

在這個例子中,當我們創建一個Derived類對象時,首先會調用Base類的構造函數來初始化基類部分,然后調用Derived類的構造函數來初始化派生類部分。輸出結果如下:

Base constructor called
Derived constructor called

需要注意的是,如果基類沒有默認構造函數(即沒有參數的構造函數),那么在創建派生類對象時,必須顯式地調用基類的帶參數的構造函數,并將派生類構造函數的參數傳遞給基類構造函數。例如:

class Base {
public:
    Base(int x) {
        std::cout << "Base constructor called with value: "<< x << std::endl;
    }
};

class Derived : public Base {
public:
    Derived(int x, int y) : Base(x) { // 顯式調用基類構造函數
        std::cout << "Derived constructor called with values: "<< x << ", "<< y << std::endl;
    }
};

int main() {
    Derived d(1, 2); // 調用基類構造函數和派生類構造函數
    return 0;
}

在這個例子中,Derived類顯式地調用了Base類的構造函數,并將x參數傳遞給基類構造函數。輸出結果如下:

Base constructor called with value: 1
Derived constructor called with values: 1, 2

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女