簡體   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