我們要定義一個使用默認構造函數構造的對象,有時可能出現下面的錯誤:
className co() ;
上面其實並沒有定義對象co
, 而是定義了一個名爲co
,類型爲className ()
的函數。
之前也僅僅到此了,今天要用<sys/stat.h>
下的stat
函數,卻突然發現其第二參數竟然是同名的stat
, 爲了區分二者,需要顯式地定義參數爲struct stat buf
。
由此,查詢了下,這才反應過來——原來在同一作用域下,C++(C)允許函數名(變量名)覆蓋類、結構體名。要區分二者,需要在類、結構體前顯式地加上class / struct
。