亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C++ defualt 與 自定義默認構造函數 是否完全等價。

C++ defualt 與 自定義默認構造函數 是否完全等價。

C++
jeck貓 2018-10-29 09:09:30
class A { public:     A() = default;       A() {}; };如上代碼:上面兩種默認構造函數是否完全等價?如果不是,請問有什么區別,什么情況下會有區別。
查看完整描述

2 回答

?
慕容3067478

TA貢獻1773條經驗 獲得超3個贊

首先默認構造函數的目的是,如果程序員沒有顯式地為一個類定義某個特殊成員函數而又需要用到該特殊成員函數時,則編譯器會隱式的為這個類生成一個默認的特殊成員函數。
我認為default在默認構造函數的目的是如下:
class A
{
public:
A() = default;

A(int B) {
b = B;
};

private:
int b;
};

A a;//如果沒有A() = default; 那么就會報錯,或者需要你手動實現一個A() { b =0;},所以我認為default只是為實現提供了方便;

至于系統的實現和我們自己的實現是否完全一致,這個不好確定,感覺也沒有必要確定。


查看完整回答
反對 回復 2018-11-03
?
楊__羊羊

TA貢獻1943條經驗 獲得超7個贊

取決于你對“等價”的定義。如果是指生成的二進制字節完全相同,那么不敢保證。
如果是指程序運行的結果,如果你的程序沒有任何涉及到未定義行為的(undefined behavior),那么肯定沒有差異。

查看完整回答
反對 回復 2018-11-03
  • 2 回答
  • 0 關注
  • 868 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號