2017-04-18 16 views
0

なぜクラス外にコンストラクタを定義する際にコンストラクタ名でクラス名を記述する必要があるのですか?....それは意味がありますか?クラス名はコンストラクタ名から簡単に検出できますそれらは同じ名前でなければならず、戻り値の型がないので、同じ名前を持つ他の通常の関数と区別することができます。コンストラクタのシンタックス定義する

+0

誰もが既にそれに慣れているので。標準は、法律と同様、人々の意見から作成されます。それは、あなたが単数であっても「あなたは...」ではなく、「あなたは...」と言わなければならない理由です。 ....あなたが文法についてより良い考えを持っているなら、それを世界/委員会に提案することができます。 – javaLover

+0

コンパイラは、例えば、 '' Foo''には、多くの選択肢があります:関数宣言、関数定義、キャスト、 'Foo'オブジェクトの作成などがあります。別の可能性のある選択肢を追加すると、コンパイラにとって非常に難しくなりますさらに、突然、クラスのメンバ関数を作成するために2つの異なる構文を使用すると、プログラマにとって難しくなります。 –

答えて

2

なぜクラス外にコンストラクタを定義している間にコンストラクタ名でクラス名を記述する必要があるのですか... ....意味がありますか?

はい。他のクラスのメソッドを定義する場合と同じです。コンストラクタは依然としてクラスのメンバであり、すべてのメンバメソッドはクラス宣言の外側で定義されたときに適切にスコープされる必要があります。異なる名前空間にある複数のクラスが同じ名前を持つ場合、どうなるか想像してみてください。名前空間とクラス名でスコープしないでコンストラクタ名を指定すると、あいまいさが発生します。

関連する問題