【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;
};

相关推荐
Tester_孙大壮几秒前
第4章:Python TDD消除重复与降低依赖实践
开发语言·驱动开发·python
数据小小爬虫1 小时前
如何使用Python爬虫获取微店商品详情:代码示例与实践指南
开发语言·爬虫·python
代码驿站5201 小时前
JavaScript语言的软件工程
开发语言·后端·golang
雪靡2 小时前
正确获得Windows版本的姿势
c++·windows
java1234_小锋2 小时前
Java中如何安全地停止线程?
java·开发语言
siy23332 小时前
[c语言日寄]结构体的使用及其拓展
c语言·开发语言·笔记·学习·算法
可涵不会debug2 小时前
【C++】在线五子棋对战项目网页版
linux·服务器·网络·c++·git
AI+程序员在路上2 小时前
C#调用c++dll的两种方法(静态方法和动态方法)
c++·microsoft·c#
一只会飞的猪_2 小时前
国密加密golang加密,java解密
java·开发语言·golang
四念处茫茫2 小时前
【C语言系列】深入理解指针(2)
c语言·开发语言·visual studio