ホームページ >バックエンド開発 >C++ >C クラス オブジェクトを正しくインスタンス化し、そのコンストラクターを呼び出すにはどうすればよいですか?

C クラス オブジェクトを正しくインスタンス化し、そのコンストラクターを呼び出すにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-22 08:07:35578ブラウズ

How Do I Correctly Instantiate a C   Class Object and Invoke Its Constructor?

C でのコンストラクター呼び出しについて

C では、コンストラクターは、クラスのオブジェクトの作成時に自動的に実行される特別なメンバー関数です。これらは、オブジェクトのデータ メンバーを初期化する役割を果たします。

問題

次のコード スニペットを考えてみましょう:

#include <iostream>
using namespace std;

class Class {
    public:
        Class() {
            cout << "default constructor called" << endl;
        }

        ~Class() {
            cout << "destructor called" << endl;
        }
};

int main() {
    Class object(); // Incorrect syntax
}

main() 関数Class クラスのオブジェクトを作成しようとします。ただし、コンストラクターは期待どおりに呼び出されません。

原因

問題は、オブジェクト宣言で使用されている間違った構文にあります:

Class object();

この行は、Class オブジェクトを返す object() という名前の関数を宣言します。クラス Class のオブジェクトを正しく作成するには、次の構文を使用する必要があります。

Class object;

解決策

クラス名の後の括弧を削除することで、適切に作成できます。 Classクラスのオブジェクトを宣言します。このオブジェクトは、期待どおり、デフォルトのコンストラクターを正しく呼び出します。

追加メモ

  • 最も厄介な解析は、コードが次のように解釈される C の現象です。コンテキストに応じて、関数宣言またはクラス宣言のいずれかになります。
  • この曖昧さを避けるために、次の規則に従うことをお勧めします。サム: 「コンストラクターの呼び出しを示すには、常にクラス名の後にかっこを置きます。」

以上がC クラス オブジェクトを正しくインスタンス化し、そのコンストラクターを呼び出すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。