class A
{
public:
A() = default;
A() {};
};如上代碼:上面兩種默認構造函數(shù)是否完全等價?如果不是,請問有什么區(qū)別,什么情況下會有區(qū)別。
2 回答

慕容3067478
TA貢獻1773條經(jīng)驗 獲得超3個贊
首先默認構造函數(shù)的目的是,如果程序員沒有顯式地為一個類定義某個特殊成員函數(shù)而又需要用到該特殊成員函數(shù)時,則編譯器會隱式的為這個類生成一個默認的特殊成員函數(shù)。
我認為default在默認構造函數(shù)的目的是如下:
class A
{
public:
A() = default;
A(int B) {
b = B;
};
private:
int b;
};
A a;//如果沒有A() = default; 那么就會報錯,或者需要你手動實現(xiàn)一個A() { b =0;},所以我認為default只是為實現(xiàn)提供了方便;
至于系統(tǒng)的實現(xiàn)和我們自己的實現(xiàn)是否完全一致,這個不好確定,感覺也沒有必要確定。

楊__羊羊
TA貢獻1943條經(jīng)驗 獲得超7個贊
取決于你對“等價”的定義。如果是指生成的二進制字節(jié)完全相同,那么不敢保證。
如果是指程序運行的結果,如果你的程序沒有任何涉及到未定義行為的(undefined behavior),那么肯定沒有差異。
- 2 回答
- 0 關注
- 847 瀏覽
添加回答
舉報
0/150
提交
取消