同一作用域下函數名(變量名)可以覆蓋類、結構體名

我們要定義一個使用默認構造函數構造的對象,有時可能出現下面的錯誤:

className co() ;

上面其實並沒有定義對象co , 而是定義了一個名爲co,類型爲className ()的函數。

之前也僅僅到此了,今天要用<sys/stat.h>下的stat函數,卻突然發現其第二參數竟然是同名的stat , 爲了區分二者,需要顯式地定義參數爲struct stat buf

由此,查詢了下,這才反應過來——原來在同一作用域下,C++(C)允許函數名(變量名)覆蓋類、結構體名。要區分二者,需要在類、結構體前顯式地加上class / struct

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章