摘自 cppreference
显示声明构造函数不允许 隐式构造转换,和拷贝构造函数初始化
struct A
{
A(int) { } // converting constructor
A(int, int) { } // converting constructor (C++11)
operator bool() const { return true; }
};
struct B
{
explicit B(int) { }
explicit B(int, int) { }
explicit operator bool() const { return true; }
};
int main()
{
A a1 = 1; // OK: copy-initialization selects A::A(int)
A a2(2); // OK: direct-initializatio

本文介绍了C++中explicit关键字的作用,它用于抑制构造函数的隐式转换,以防止不必要的类型转换。通过示例展示了如何使用explicit防止隐式构造转换,并解释了其在拷贝初始化、直接初始化和列表初始化等场景中的影响。
最低0.47元/天 解锁文章
6126

被折叠的 条评论
为什么被折叠?



