2012-01-04 61 views
4

12.1/1。構造函數沒有名字。使用可選的函數說明符序列(7.1.2),然後是 構造函數的類名稱後跟參數列表的特殊聲明語法用於聲明或定義構造函數 。在這樣的聲明中,忽略構造函數類名周圍的可選 括號。圍繞構造函數語法的括號

閱讀該文本,我想知道什麼是在下面的例子中被忽略的構造函數名稱括號?

class MyClass 
{ 
    MyClass(); 
}; 

MyClass::MyClass() { 
} 

回答

6

在代碼片段中沒有可選的括號。下面的例子有環繞構造的類名可選圓括號,而這些括號被忽略:

class MyClass 
{ 
    (MyClass)(); 
}; 

MyClass::MyClass() { } 
+2

任何想法,爲什麼被允許?順便說一句,看來我們不能'MyClass :: :(MyClass)(){}' – 2012-01-04 23:25:24

+0

我不知道'(MyClass :: MyClass)()'是否工作。 – 2012-01-04 23:29:59

+2

@AaronMcDaid:可能是C語言的語法。你知道你可以說'int(i)'而不是'int i'嗎? ;) – fredoverflow 2012-01-04 23:50:52