-5
int* p1, p2;

C++ 標準によれば、p1はポインタですが、そうでp2はありません。

なぜ C++ 標準もp2ポインターとして定義しないのだろうか?

そうするのは合理的だと思います。なぜなら:

C++ は強力な型付け言語です。つまり、任意の型 T が与えられた場合、ステートメントT t1, t2;は常に保証され、同じ型を持ちますt1t2

ただし、 と が同じ型を持っていないという事実p1p2、規則に違反しており、直感に反するように見えます。

それで、私の質問は次のとおりです。そのような直感に反するルールをそのままにする理由は何ですか? 下位互換性のためだけですか?

4

2 に答える 2

2

あまり役に立たない簡単な答えは、変数を定義するための構文がまったく同じである C との下位互換性のために行われているということです。その設計の理論的根拠は、C の作成者に由来するものでなければなりませんが、私にはそれがよくわかりません。

私が知っていることは、私がさまざまな企業で使用したほとんどのコーディング ガイドラインでは、同じステートメントで複数の変数を定義することを禁止していたことです。C および C++ での宣言の構文は、実際にはその強みの 1 つではありませんが、それが何であるかです。

于 2013-09-21T03:39:01.430 に答える