【C++知识点】explicit 关键字

✍个人博客: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;
}

隐式构造部分就会报错:

在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值