c++默認(rèn)構(gòu)造函數(shù)如何調(diào)用

c++
小樊
81
2024-11-19 12:02:41

在C++中,當(dāng)你創(chuàng)建一個(gè)類的對(duì)象時(shí),如果沒有提供任何構(gòu)造函數(shù),編譯器會(huì)自動(dòng)為你提供一個(gè)默認(rèn)構(gòu)造函數(shù)。默認(rèn)構(gòu)造函數(shù)有以下幾種情況:

  1. 無參數(shù)的默認(rèn)構(gòu)造函數(shù):它不執(zhí)行任何操作,只是對(duì)對(duì)象進(jìn)行初始化。
class MyClass {
    // 編譯器自動(dòng)生成的無參數(shù)默認(rèn)構(gòu)造函數(shù)
};

int main() {
    MyClass obj; // 調(diào)用默認(rèn)構(gòu)造函數(shù)
    return 0;
}
  1. 有參數(shù)的默認(rèn)構(gòu)造函數(shù):它接受一定數(shù)量的參數(shù),但這些參數(shù)都有默認(rèn)值。
class MyClass {
public:
    int x;
    int y = 0; // y具有默認(rèn)值0

    // 編譯器自動(dòng)生成的帶有一個(gè)整數(shù)參數(shù)的默認(rèn)構(gòu)造函數(shù)
    MyClass(int a) : x(a) {}
};

int main() {
    MyClass obj(5); // 調(diào)用帶有一個(gè)整數(shù)參數(shù)的默認(rèn)構(gòu)造函數(shù),x被初始化為5
    return 0;
}
  1. 有多個(gè)參數(shù)的默認(rèn)構(gòu)造函數(shù):它接受多個(gè)參數(shù),并為所有參數(shù)提供默認(rèn)值。
class MyClass {
public:
    int x;
    int y = 0;
    int z = 0; // z具有默認(rèn)值0

    // 編譯器自動(dòng)生成的帶有三個(gè)整數(shù)參數(shù)的默認(rèn)構(gòu)造函數(shù)
    MyClass(int a, int b = 0, int c = 0) : x(a), y(b), z(c) {}
};

int main() {
    MyClass obj(5); // 調(diào)用帶有三個(gè)整數(shù)參數(shù)的默認(rèn)構(gòu)造函數(shù),x被初始化為5,y和z被初始化為0
    return 0;
}

總之,C++默認(rèn)構(gòu)造函數(shù)的調(diào)用方式取決于你提供的構(gòu)造函數(shù)。如果你沒有為類定義任何構(gòu)造函數(shù),編譯器會(huì)自動(dòng)為你提供一個(gè)默認(rèn)構(gòu)造函數(shù)。如果你定義了帶參數(shù)的構(gòu)造函數(shù),但沒有定義無參數(shù)構(gòu)造函數(shù),編譯器將不再提供默認(rèn)構(gòu)造函數(shù),你需要在代碼中顯式地調(diào)用帶參數(shù)的構(gòu)造函數(shù)。

0