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

相关推荐
我在人间贩卖青春2 小时前
C++之多重继承
c++·多重继承
m0_736919102 小时前
C++代码风格检查工具
开发语言·c++·算法
2501_944934732 小时前
高职大数据技术专业,CDA和Python认证优先考哪个?
大数据·开发语言·python
黎雁·泠崖3 小时前
【魔法森林冒险】5/14 Allen类(三):任务进度与状态管理
java·开发语言
2301_763472463 小时前
C++20概念(Concepts)入门指南
开发语言·c++·算法
阿猿收手吧!4 小时前
【C++】std::promise原理与实战解析
c++
TechWJ4 小时前
PyPTO编程范式深度解读:让NPU开发像写Python一样简单
开发语言·python·cann·pypto
lly2024064 小时前
C++ 文件和流
开发语言
m0_706653234 小时前
分布式系统安全通信
开发语言·c++·算法
Zach_yuan5 小时前
深入浅出 JSONCpp
linux·服务器·网络·c++