✍个人博客:https://blog.csdn.net/Newin2020?spm=1011.2415.3001.5343
📚专栏地址:C/C++知识点
📣专栏定位:整理一下 C++ 相关的知识点,供大家学习参考~
❤️如果有收获的话,欢迎点赞👍收藏📁,您的支持就是我创作的最大动力💪
🎏唠叨唠叨:在这个专栏里我会整理一些琐碎的 C++ 知识点,方便大家作为字典查询~
explicit 关键字
作用: 表明该构造函数是显示的,而非隐式的,不能进行隐式转换!
#include <iostream>
#include <string>
using namespace std;
class student {
public:
//默认隐式构造
student(int _age)
{
age = _age;
cout << "age=" << age << endl;
}
student(int _age, const string _name)
{
age = _age;
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;
}
第二类隐式构造是初始化参数列表,C++11 前编译不能通过,C++11 新增特性。
如果将类中构造函数改成如下:
explicit student(int _age)
{
age = _age;
cout << "age=" << age << endl;
}
隐式构造部分就会报错: