隐式地将char*转换为我的字符串

use*_*926 1 c++

我有自己的字符串class(DinString),没什么特别的.我想知道可以做这样的事情

DinString a= "Helo World";

bool Func(DinString string);

Func("test");
Run Code Online (Sandbox Code Playgroud)

Fre*_*abe 6

是的.只需实现一个合适的(非explicit!)构造函数:

class DinString {
public:
    DinString( const char *s ) {
        // ...
    }
};
Run Code Online (Sandbox Code Playgroud)

请注意,如果您链​​接'多个这样的构造函数,这将不起作用.例如,以下内容不起作用:

class DinString {
public:
    DinString( const char *s ) {
        // ...
    }
};

class FooString {
public:
    FooString( const DinString & ) { }
};

void f( const FooString &) { }

f( "hello" ); // doesn't call FooString(DinString("hello!")); !
Run Code Online (Sandbox Code Playgroud)