0

たとえば、次のようなコンストラクタがあります

myClass(const char* name);

それは好きですか?

myClass(const char* name);
{
  someInnerField = name;
}

または、入力文字列を内部フィールドに値でコピーする必要がありますか?

4

4 に答える 4

4

安全なのは次のとおりです。

std::string someInnerField;
myClass(const std::string& name) : someInnerField(name)
{
}

クラスがそのメンバーが指すメモリを破棄した場合 (そしてクラスのスコープ外でメモリを使用した場合)、またはメモリがクラスの外部で破棄された場合 (内部で使用し続けた場合) は、バージョンが失敗する可能性があります。

于 2012-10-12T07:46:55.170 に答える
0

それは動作しません。std::string を使用してください。または、「char*」の場合は「strcpy」または「memcpy」の関数を使用できます。</p>

于 2012-10-12T09:45:22.947 に答える