繁体   English   中英

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

[英]Cast char* to my string implicitly

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

DinString a= "Helo World";

bool Func(DinString string);

Func("test");

是的。 只需实现适当的(非explicit !)构造函数即可:

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

请注意,如果您像这样“链接”多个构造函数,则此方法将无效。 例如,以下操作无效

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!")); !

您可以定义一个构造函数来为您执行此转换:

class DinString {
  DinString(const char *string) { 
    // do something useful here
  }
};

之所以DinString a= "Helo World";因为DinString a= "Helo World"; 不是一个赋值(尽管出现),实际上等效于编写DinString a("Hello World");

是的,为您的类提供一个转换构造函数,将const char *作为输入。

DinString::DinString(const char *);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM