参数化和转换构造函数

ckv*_*ckv 0 c++

参数化构造函数和转换构造函数之间是否有任何区别.如果是这样的话是什么?

小智 5

参数化构造函数(可能是)任何带有一个或多个参数的构造函数.转换构造函数是可以使用单个参数调用的构造函数,并且未声明为显式.

struct A {
    A();     // not parameterised or conversion
    A( int x, int y  ); // paramterised, not conversion
    A( int x );      // conversion
    explicit A( float z );    // not conversion;
};
Run Code Online (Sandbox Code Playgroud)

转换构造函数可以由编译器使用.鉴于:

void f( A a ) {
}
Run Code Online (Sandbox Code Playgroud)

编译器可以将此函数调用为:

f( 42 );
Run Code Online (Sandbox Code Playgroud)

使用转换构造函数将42转换为A类型的对象.