ホームページ > バックエンド開発 > C++ > コンストラクター宣言で引数なしで括弧を使用できないのはなぜですか?

コンストラクター宣言で引数なしで括弧を使用できないのはなぜですか?

Patricia Arquette
リリース: 2024-11-20 20:02:21
オリジナル
1070 人が閲覧しました

Why Can't I Use Parentheses in my Constructor Declaration Without Arguments?

複雑な解析エラー: コンストラクター引数のかっこの難問を解く

謎めいたエラー メッセージ「request for member 'function1'」が発生したとき「myObj」内。これは非クラス型「MyClass」です。 ()()'" C プログラムをコンパイルしようとしているときに、開発者はこの複雑な解析エラーの背後にある理由を熟考していることに気づくかもしれません。問題のソース コードには、次の行を使用して宣言された引数のないコンストラクターを持つクラスが含まれています:

MyClass myObj();
ログイン後にコピー

コンパイル プロセスを実行すると、前述のエラーが表示され、メンバー関数 'function1' を実行できないことが示されます。 「myObj」は非クラス型として認識されるため、オブジェクト「myObj」を介してアクセスできます。この問題を解決するには、コードを次のように変更します。

MyClass myObj;
ログイン後にコピー

これにより、コンストラクター宣言に引数がない場合に括弧を省略する必要があるかどうかという疑問が生じます。括弧を使用した空のコンストラクター宣言は C で以前から使用されてきましたが、言語標準は断固たる姿勢をとりました。提供されたコードのようなあいまいさは、関数宣言を優先して一貫して解決されています。

注意することが重要です。新しい式内や、値が初期化された一時オブジェクトの構築中など、特定のシナリオでは空の括弧初期化子が許可されます。ただし、引数のないコンストラクター宣言の場合、標準では括弧の省略が厳しく規定されています。これにより明確さが確保され、構文の曖昧さから生じる可能性のある混乱が防止されます。

以上がコンストラクター宣言で引数なしで括弧を使用できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート