class Base {
size_t n; // 數據成員
int n(char x) { return 11; } // 成員函數
};
// 編譯錯誤:error C2365: 'Base::n' : 重定義;以前的定義是 '數據成員'
C++ 標準規定:同一類作用域內,數據成員(含靜態/非靜態)與成員函數不能同名。即使參數列表不同(重載),也會觸發 C2365。這與全局作用域允許函數與變量同名不同。
class C1 {
int CFunc(); // 成員函數
char *CFunc; // 錯誤 C2365:與函數同名
int CMem;
char *CMem(); // 錯誤 C2365:與數據成員同名
};
m_(m_n),函數動詞開頭(getN())。
int n; // 全局變量
int n(double); // 全局函數 - 合法,不同作用域(變量 vs 函數)
類內成員共享同一作用域,故不允許。