目錄
1.explicit
explicit(明確的)用於修飾只有一個參數的類的構造函數,防止隱式生成對象(通過此構造函數)。
如下:
class Num
{
public:
Num(int b)
{
a = b;
cout << "拷貝構造函數調用" << endl;
}
private:
int a;
};
int main()
{
Num num = 10;
return 0;
}
如上程序,會隱式的調用構造函數,程序運行結果如下:
如果我們給構造函數前面加上關鍵字explicit,這種隱式的轉換不會發生,程序報錯。
2.mutable
mutable(易變的)用來修飾結構體或者類中的變量,被修飾成mutable的變量能突破const的限制,成爲永遠可變的變量。
如下例所示:
# include<iostream>
using namespace std;
class Test
{
public:
Test(int num) :_num(num) {}
void Print() const
{
//被聲明成const的函數不能修改成員變量
this->_num = 10;//由於_num被聲明爲mutanble,因此次此處是可以修改的
cout << _num << endl;
}
private:
mutable int _num;
};
int main()
{
Test test(5);
test.Print();
return 0;
}
打印結果如下:
3.volatile
volatile的中文意思爲不穩定的、易變的。
關於volatile的解析,我發現菜鳥教程上講解的挺容易理解的,volatile詳解