3

私は C++ プログラミングの初心者で、C++ クラス コンストラクターに関して簡単な質問があります。次のコード スニップでコンストラクターが呼び出された回数は?

std::string s = std::string("hello world");

たぶん2つですよね?1 つ目は string(const char* s)、2 つ目は string(const string& s) です。私が間違っている場合は、私を修正してください。

次の質問は、コードをリリース モードでコンパイルすると、コンパイラは自動的に最適化するかどうかです。たとえば、次のように扱いstd::string s("hello world");ます。異なるコンパイラは異なる動作をしますか?

4

2 に答える 2

3

あなたのコードはコピー省略の資格があるため、ほとんどの健全なコンパイラは、std::string s("hello world");明示的にそうしないように指示されない限り、常にこれを同様に扱います。

于 2013-04-17T15:06:10.080 に答える