回覆列表
  • 1 # 使用者4535895317817

    看了大部分人的回答,都是在強調建構函式初始值列表(樓主可以看看c++ primer 5th中文版第258頁,對這個問題有較深說明),一個是直接初始化資料成員,後者則先初始化再賦值。

    還有

    Derived_s2(string s): Base_s2(s){} //委託Base_s2()這個函式完成Derived_s2()這個函式的功能

    Derived_s2(string s){ Base_s2(s); //如果把這句去掉,編譯也是沒問題的。因為父類有預設建構函式。 }

    測試程式碼,編譯執行都沒問題呀:

    #include <iostream>

    #include <string>

    using std::string;

    struct Base_s2

    {

    public:

    Base_s2()=default;

    Base_s2(string s):name(s){}

    private:

    string name;

    };

    struct Derived_s2:public Base_s2

    {

    Derived_s2()=default;

    Derived_s2(string s)

    {

    ;

    }

    };

    int main()

    {

    Derived_s2 der1;

    Derived_s2 der2("hello");

    return 0;

    }

  • 中秋節和大豐收的關聯?
  • 做紫菜蛋湯,又加什麼配料?