explicit 关键字
explicit /ɪkˈsplɪsɪt/ 明确的;清楚的;直率的;详述的
作用是表明该构造函数是显示的, 而非隐式的.不能进行隐式转换! 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式).
demo1 代码:
#include <iostream>
#include <string>
using namespace std
;
class student
{
public:
student(int _age
)
{
this->age
= _age
;
cout
<< "arg=" << age
<< endl
;
}
student(int _age
, const string _name
)
{
this->age
= _age
;
this->name
= _name
;
cout
<< "age=" << age
<< "; name=" << name
<< endl
;
}
~student()
{
}
int getAge()
{
return age
;
}
string
getName()
{
return name
;
}
private:
int age
;
string name
;
};
int main(void)
{
student
xiaoM(18);
student xiaoW
= 18;
student
xiaoHua(19, "小花");
student xiaoMei
= { 18, "小美" };
system("pause");
return 0;
}
demo2 代码
#include <iostream>
#include <string>
using namespace std
;
class student
{
public
:
explicit
student(int _age
)
{
this
->age
= _age
;
cout
<< "arg=" << age
<< endl
;
}
explicit
student(int _age
, const string _name
)
{
this
->age
= _age
;
this
->name
= _name
;
cout
<< "age=" << age
<< "; name=" << name
<< endl
;
}
~student()
{
}
int getAge()
{
return age
;
}
string
getName()
{
return name
;
}
private
:
int age
;
string name
;
};
int main(void)
{
student
xiaoM(18);
student xiaoW
= 18;
student
xiaoHua(19, "小花");
student xiaoMei
= { 18, "小美" };
system("pause");
return 0;
}
这样的话隐式就会报错, 显示就会没问题.
结语:
时间: 2020-06-30