C++繼承機(jī)制怎樣調(diào)用基類構(gòu)造函數(shù)

c++
小樊
81
2024-11-08 23:41:26

在C++中,當(dāng)創(chuàng)建一個(gè)派生類對(duì)象時(shí),基類的構(gòu)造函數(shù)會(huì)在派生類對(duì)象構(gòu)造之前被調(diào)用。你可以通過(guò)以下幾種方式調(diào)用基類構(gòu)造函數(shù):

  1. 默認(rèn)構(gòu)造函數(shù):如果基類有一個(gè)默認(rèn)構(gòu)造函數(shù)(沒(méi)有參數(shù)),你可以在派生類構(gòu)造函數(shù)的初始化列表中直接使用base_class_name()來(lái)調(diào)用它。例如:
class Base {
public:
    Base() {
        // 基類構(gòu)造函數(shù)實(shí)現(xiàn)
    }
};

class Derived : public Base {
public:
    Derived() : Base() { // 調(diào)用基類默認(rèn)構(gòu)造函數(shù)
        // 派生類構(gòu)造函數(shù)實(shí)現(xiàn)
    }
};
  1. 帶參數(shù)的構(gòu)造函數(shù):如果基類有一個(gè)帶參數(shù)的構(gòu)造函數(shù),你需要在派生類構(gòu)造函數(shù)的初始化列表中顯式地調(diào)用它,并傳遞相應(yīng)的參數(shù)。例如:
class Base {
public:
    Base(int x) {
        // 基類構(gòu)造函數(shù)實(shí)現(xiàn)
    }
};

class Derived : public Base {
public:
    Derived(int x) : Base(x) { // 調(diào)用基類帶參數(shù)的構(gòu)造函數(shù)
        // 派生類構(gòu)造函數(shù)實(shí)現(xiàn)
    }
};
  1. 繼承構(gòu)造函數(shù):從C++11開(kāi)始,你可以使用using聲明來(lái)繼承基類的構(gòu)造函數(shù)。例如:
class Base {
public:
    Base() {
        // 基類構(gòu)造函數(shù)實(shí)現(xiàn)
    }

    Base(int x) {
        // 基類帶參數(shù)構(gòu)造函數(shù)實(shí)現(xiàn)
    }
};

class Derived : public Base {
public:
    using Base::Base; // 繼承基類的所有構(gòu)造函數(shù)
};

這樣,Derived類就會(huì)繼承Base類的所有構(gòu)造函數(shù),可以直接使用Derived()Derived(int x)來(lái)創(chuàng)建派生類對(duì)象。

0