最近在學習C++對象模型的相關知識,其中遇到了數據類型綁定時機不同,造成結果不同,特此記錄一下。直接貼代碼:
typedef char* mytype;
Class A{
public:
void funca(mytype my){ ///////-------------->mytype 爲char* 全局變量
mytype myvalue ; /////////--------->mytype爲int 成員類型
}
void funcb(mytype my); ///////-------------->mytype 爲char* 全局變量
typedef int mytype;
};
void A::funcb(mytype my){ --------->mytype爲int 成員類型
return ;
}
此時funcb會報錯,“int A::funb(A::mytype)”:“A”中沒有找到重載的成員函數“ 。這裏主要是成員函數的解析是在類全部定義完成後纔會進行,在函數定義時的mytype 只能是全局類型,不同的是funcb ,類外的funcb函數中 ,mytype是類全部定義後後的int類型,因此會出現沒有找到重載函數的情況。