【C++关键字——explicit显式】

怎么理解呢?

就好比:

int a=3.14;

cpp 复制代码
	base b(10);     //显式
	b = base(10);   //显式
	b = 12;         //隐式,加了explicit就报错

对于12,他会先去创建一个base类型的临时对象:base(12),运行构造函数,然后把临时对象拷贝给b;

临时对象 与 const 、&

const被设计为读对象的值,所以绑定到临时对象也不会出现通过&改变临时对象的值(因为很快就会被销毁)

cpp 复制代码
	base& b = 10;   //err  类似于:不能把右值绑定到左值

	const base& a = 10;    //ok

引入explicit:

也就不会产生临时变量了。

对于多参构造:

explicit同样适用,const&,&都和上面一样

需要注意设置默认值时,从左往右的缺省规则

{}:聚合初始化

cpp 复制代码
class base {
public:
	base(int a);
	base(int a, int b);

};

int main()
{
	base b = 10 ;    
	base b = { 1,2 };
	return 0;
};

相关推荐
小张认为的测试18 分钟前
如何更改 maven 指定的 java 版本 set JAVA_HOME=C:\Program Files\Java\jdk1.8
java·开发语言·maven
dream wings21 分钟前
C语言进阶(2) ---- 指针的进阶
c语言·开发语言
CoderCodingNo21 分钟前
【GESP】C++二级考试大纲知识点梳理, (2)计算机网络的基本概念及分类
网络·c++·计算机网络
水w26 分钟前
springBoot Maven 剔除无用的jar引用
开发语言·spring boot·后端·maven·jar
AI+程序员在路上44 分钟前
OpenCV目标检测 级联分类器 C++实现
c++·opencv·目标检测
Starshime1 小时前
【Java】网络套接字
java·开发语言·网络
等什么君!1 小时前
学习反射(反射的使用,反射的应用场景)
java·开发语言·学习
“抚琴”的人1 小时前
C#—LINQ详解及汇总
开发语言·c#·linq
TT哇1 小时前
练习题 逆波兰表达式求值
java·开发语言
数据小小爬虫1 小时前
如何利用Python爬虫获得1688按关键字搜索商品
开发语言·爬虫·python