C++primer 7.5.3節練習

來源:互聯網
上載者:User

標籤:main   依賴   成員   無法   定義   答案   類型   理論   code   

練習7.43

網上的答案

 1 #include <iostream> 2 using std::cout; 3 using std::endl; 4  5 class Nodefault 6 { 7 public: 8     Nodefault(int i) 9     {10         val = i;11     }12     int val;13 };14 15 class C16 {17 public:18     Nodefault nd;19     C(int i = 0) : nd(i) { }20 };21 22 int main()23 {24     C c;25     cout<<c.nd.val<<endl;26     return 0;27 }

但是覺得不對,對於這樣的構造方法不是c的預設建構函式,只是c的建構函式。個人認為缺少NoDefault的預設建構函式的情況下,無法構造c的預設建構函式;

練習7.44

不合法,因為NoDefault類並沒有他的預設建構函式,這樣的定義最後得到的將是未定義的。

練習7.45

如果C能夠構造出預設建構函式,則合法,反之亦然。(但是我覺得c的預設建構函式無法構造)

練習7.46

a錯誤,因為如果類不提供任何一個建構函式,編譯器在其需要時會提供一個合成的預設建構函式;

b錯誤,如果建構函式為所有參數都提供了預設實參,則他實際上也定義了預設建構函式;

c錯誤,預設建構函式在理論上來說是必須的;

d錯誤,如果類包含內建類型或複合類型的成員,則該類不應該依賴於合成的預設建構函式。

C++primer 7.5.3節練習

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.