C++11和 C++14的推出,新的技術(shù),新的代碼方式不斷出現(xiàn),碼農(nóng)需努力啊!
關(guān)鍵詞 default
在 C++中,有4種特殊函數(shù)
構(gòu)造函數(shù),拷貝構(gòu)造函數(shù),析構(gòu)函數(shù),拷貝賦值函數(shù)
一個類即使不聲明上述4個函數(shù),當(dāng)代碼被編譯并且需要時,編譯器會自動生成.
構(gòu)造函數(shù)一旦聲明帶參數(shù)的,需手動寫一個空的函數(shù)體.
虛析構(gòu)函數(shù),在舊式0x 中通常都是為空函數(shù).
....
這些函數(shù)都在源代碼中存在!可能某些編譯器會優(yōu)化掉代碼,但不確保所有編譯器都會優(yōu)化.
而 default 就是了為了解決這問題的.
例如:
class A{
public: A() =default;
A(const A&) = default;
virtual ~A()=default;
A& operator=(const A&) = default;
};
常用的是 A() = default; 和 virtual ~A()=default;
這樣寫比寫一個空白函數(shù)更加優(yōu)化;
關(guān)鍵詞 delete
不允許訪問某個函數(shù),達(dá)到類似被刪除的效果.其實針對的是拷貝構(gòu)造函數(shù),帶參數(shù)的構(gòu)造函數(shù)等.
例如
class A{
public:?
? ? ?A() = delete;
? ? ?A(int i){}
};
實際代碼:
A a;//error
A b(2);//ok