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

相关推荐
️是78几秒前
信息奥赛一本通—编程启蒙(3346:【例60.3】 找素数)
数据结构·c++·算法
一杯美式 no sugar2 分钟前
类和对象(中)
开发语言·c++
qq_416018724 分钟前
实时数据可视化库
开发语言·c++·算法
格林威4 分钟前
工业相机参数解析:曝光时间与运动模糊的“生死博弈”
c++·人工智能·数码相机·opencv·算法·计算机视觉·工业相机
2401_8732046518 分钟前
C++中的策略模式进阶
开发语言·c++·算法
OKkankan19 分钟前
深入理解linux进程
java·linux·c++
HABuo19 分钟前
【linux线程(一)】线程概念、线程控制详细剖析
linux·运维·服务器·c语言·c++·ubuntu·centos
王老师青少年编程19 分钟前
2026年3月GESP真题及题解(C++七级):物流网络
c++·题解·真题·gesp·csp·七级·物流网络
xushichao198923 分钟前
C++中的职责链模式实战
开发语言·c++·算法
fqbqrr26 分钟前
2603C++,C++强项
c++