好久沒寫過博客了,走一篇基礎語法吧,算是湊個數吧
C++的explicit關鍵字的唯一作用就是放在一個類的構造函數前面修飾他,使此個構造函數無法通過賦值方式的隱式轉換來調用。
以上這句話是我概括的,那麼具體案例如下
// testcpplus.cpp : 定義控制檯應用程序的入口點。
//
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <string>
class MyClass
{
public:
explicit MyClass(int _age)
{
age = _age;
}
MyClass(const char *_name)
{
strcpy(name, _name);
}
~MyClass()
{
}
public:
int age;
char name[200];
};
int main(int argc, char* argv[])
{
MyClass myclassint1(5);//可以編譯OK
MyClass myclassint2 = 5;//無法隱式調用構造函數
MyClass myclassfloat = "123456";//可以編譯OK。隱式調用了構造函數
myclassfloat = "789654";//可以編譯OK。
printf("測試完畢\r\n");
system("pause");
return 0;
}
總結:此關鍵字最大作用就是防止在有很多單參數構造函數等於號極度容易衝突情況,可以加上此關鍵字,保證正取的調用構造函數。
注意:實際我個人推薦要儘量可能避免一切隱式轉換的發生,不管它能不能隱式轉換。