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

时间:2011-11-15 11:42:30

标签: c++

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

DinString a= "Helo World";

bool Func(DinString string);

Func("test");

3 个答案:

答案 0 :(得分:6)

是的,确实如此。只需实现一个适当的(非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!")); !

答案 1 :(得分:3)

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

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

这是有效的,因为DinString a= "Helo World";不是作业(尽管出现),实际上相当于写作DinString a("Hello World");

答案 2 :(得分:1)

是为您的班级提供转化构造函数,const char *作为输入。

DinString::DinString(const char *);