C では、クラスのオブジェクトを初期化するためにコンストラクターが使用されます。ただし、提供されたコード スニペットでは、コンストラクターが呼び出されず、予期しない動作が発生します。
問題のある行:
Class object();
は実際には実行されません。 Class クラスのコンストラクターを呼び出します。代わりに、Class オブジェクトを返す関数を宣言します。コンストラクターを正しく呼び出してオブジェクトを作成するには、次の行にセミコロン (;) を追加する必要があります:
Class object;
最初のコード スニペットのハイライトこれは、C の「最も厄介な解析」として知られる問題です。
Class object();
という行に遭遇すると、C パーサーはそれを関数宣言または空の引数リストを使用した関数呼び出しとして曖昧に解釈します。このあいまいさは、混乱や予期せぬ結果を招くことがよくあります。
コンストラクターを呼び出してオブジェクトを作成するには、コードを次のように更新する必要があります。
#include <iostream> using namespace std; class Class { Class() { cout << "default constructor called"; } ~Class() { cout << "destructor called"; } }; int main() { Class object; // Correctly invokes the constructor }
修正されたコードを実行して、予想される出力を確認します:
default constructor called destructor called
以上が「Class object();」 が C オブジェクトを作成しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。