explicit in c++

来源:互联网 发布:手机淘宝店名可以改吗 编辑:程序博客网 时间:2024/06/07 23:32

在很多库中可以看到这个c++的关键字,主要作用是修饰构造函数,不允许隐式转换,避免难以觉察的错误

下面是cppreference中的例子

struct A{    A ( int ) {}    operator int() const { return 0; }};struct B{    explicit B(int) {}    explicit operator int() const { return 0; }};int main(){    // A is has no explicit ctor / conversion, everything is fine    A a1 = 1;    A a2 ( 2 );    A a3 { 3 };    int na1 = a1;    int na2 = static_cast<int>( a1 );    B b1 = 1; // Error: implicit conversion from int to B    B b2 ( 2 ); // OK: explicit constructor call    B b3 { 3 }; // OK: explicit constructor call    int nb1 = b2; // Error: implicit conversion from B to int    int nb2 = static_cast<int>( b2 ); // OK: explicit cast}
0 0
原创粉丝点击