C ++显式构造器的应用

这个问题在这里已经有了答案:

  • 显式关键字是什么意思? 11个答案

  • 显式构造函数是一个函数,它不会在隐式类型转换中被调用。

    例如:

    class A {
       A( int a ) {}
    };
    
    void foo( A a ) {}
    

    调用foo(1)或使用int类型的任何变量或可以隐式转换为int类型的函数完全合法。 这并不总是可取的,因为这意味着A可以从整数转换,而不是用整数定义。 添加explicit会避免转换,因此会给你一个编译错误。


    一个非显式的单参数构造函数可以被称为转换构造函数。 这是因为它们允许编译器将其他类型(参数的类型)隐式转换为对象。

    这种隐式转换并不总是需要的,并且可以通过explicit标记构造函数来禁用。

    链接地址: http://www.djcxy.com/p/24561.html

    上一篇: Application of C++ Explicit Constructor

    下一篇: C++ explicit constructor that takes a pointer