explicit关键字

c++中的构造函数不仅可以构造和初始化对象,对于单个参数的构造函数,还支持隐式的类型转换。

class Test{
public:
	Test(int a= 0 ):_a(a){}
};

int main(){
	Test t1 = 100;
	return 0;
}

上述代码在语法上,等价于

Test tmp(100);   // 构造一个临时对象
Test t1(tmp);    // 用临时对象拷贝构造出目标对象

现在的编译器已经对此做出了优化,当遇到上述代码的时候会直接按照Test t1(100)这句代码来进行处理,这也叫做隐式类型转换。但是对于单参数的构造函数来说,上述的构造代码的可读性并不是很好,这里可以使用explicit关键字来禁止单参数构造函数的隐式类型转换。

posted @ 2024-09-12 22:07  alone_qing  阅读(12)  评论(0)    收藏  举报