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

相关推荐
前端炒粉14 小时前
35.LRU 缓存
开发语言·javascript·数据结构·算法·缓存·js
星释15 小时前
Rust 练习册 75:ETL与数据转换
开发语言·rust·etl
happyjoey21715 小时前
使用Qt自带的Maintenance Tool将Qt6.9升级为QT6.10
开发语言·qt
p***h64319 小时前
JavaScript在Node.js中的异步编程
开发语言·javascript·node.js
散峰而望19 小时前
C++数组(二)(算法竞赛)
开发语言·c++·算法·github
Porunarufu19 小时前
Java·关于List
java·开发语言
子不语18020 小时前
Python——函数
开发语言·python
利刃大大20 小时前
【动态规划:背包问题】完全平方数
c++·算法·动态规划·背包问题·完全背包
ndjnddjxn20 小时前
Rust学习
开发语言·学习·rust
月光技术杂谈20 小时前
实战:C驱动框架嵌入Rust模块的互操作机制与完整流程
c语言·开发语言·rust·ffi·跨语言·bindgen·互操作