2017-04-18 50 views
0

爲什麼需要在類的外部定義構造函數時使用構造函數名來編寫類名?....是否合理?因爲類名可以很容易地從構造函數的名稱中檢測爲它們必須具有相同的名稱,因爲它沒有返回類型,所以我們可以將它與具有相同名稱的其他常規函數區分開來。構造函數的Syntex定義

+0

因爲大家都已經習慣了。標準是根據人們的意見創建的,與法律一樣。這就像爲什麼我們必須說「你是......」而不是「你是」,即使它是單數。 ....如果您對語法有更好的瞭解,可以向世界/委員會提出建議。 – javaLover

+0

編譯器在看到例如'Foo('然後它有很多選擇:它可能是一個函數聲明,一個函數定義,一個類型轉換,一個'Foo'對象的創建以及其他一些可能的替代方法。添加另一個可能的替代方法會使編譯器變得更加困難找出真正發生的事情,而且,突然間你會有兩種不同的語法來創建類的成員函數,這使得程序員更難。 –

回答

2

爲什麼需要在類的外部定義構造函數時使用構造函數名寫類名?....它有意義嗎?

是。與定義類的任何其他方法時相同。構造函數仍然是類的成員,並且在類聲明之外定義的所有成員方法都必須有適當的作用域。想象一下,如果不同名稱空間中的多個類具有相同的名稱會發生​​什麼情況。指定構造函數名稱而不用命名空間和類名進行範圍化會導致不明確。