new()演算子のデフォルトの動作は、新しいオブジェクトを返すか、メモリ割り当てに失敗した場合に例外をスローすることです。したがって、振る舞いを変更するフラグを設定したり、クラスの独自のnew()演算子を実装しない限り、myClass
がNULLかどうかを確認する必要はありません。
また、myClass
の余分な括弧は必要ありません。 std::string
クラスのメソッドc_str()
のアドレスがNULLでない場合は、より良い方法は、あなたが次に
if ((myClass != nullptr) &&
だろうチェックしたいものを表現するために、あなたは現在テストしています。あなたがしたいとは思わない、と思います。
まず、myString.c_str()
と記述する必要があります。次に、このメソッドはNULLポインタを返しません。返すことができるのは空のC文字列です。しかし、これは、より良いstd::string::empty()
でテストされているので、あなたのチェックは次のようになります。もちろん最後
return !myString.empty();
に短縮することができ
if (myString.empty()) {
return false;
} else {
return true;
}
:あなたは関数/メソッドでこのコードをお持ちの場合:誰があなたの新しいSomeClassオブジェクトを削除しますか?
意味がありません。オブジェクトのさまざまな意味的状態をテストするための特定のAPIとして 'std :: string'を使用します。 – StoryTeller
最初のチェックは意味をなさないが、 'new'演算子は決してヌルポインタを返しません。 –
また、 'myString.c_str'は有効な式ではありません。 – StoryTeller