C では、次の例に示すように、クラス データ メンバーは直接初期化構文 () を使用して初期化できません。 :
#includeclass test { public: void fun() { int a(3); std::cout コンパイルはエラーで失敗します:
11 9 [Error] expected identifier before numeric constant 11 9 [Error] expected ',' or '...' before numeric constantこれはなぜですか?
C 標準では、この構文は明示的に禁止されています。クラスデータメンバーの初期化。この機能の導入に関する初期の提案では、解析の問題が理由として挙げられていました。
次のあいまいな例を考えてみましょう:
struct S { int i(x); // data member with initializer or... // ... static int x; int i(y); // member function declaration // ... typedef int y; };標準では解決策が提案されています:
曖昧さを排除するために、C 標準ではクラス データ メンバーの初期化に次の構文のみが許可されています:
- = 初期化子句
- { 初期化子リスト}
この解決策により、明確さが保証され、宣言がオブジェクト宣言と関数宣言の両方に似ている可能性がある場合の誤解の可能性が回避されます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3