我有一個C++函數重載的問題。這是一個示例類。函數重載不起作用
class test
{
public:
const char* data() const
{
std::cout << "const char* data() const" << std::endl;
return data_;
}
char* data()
{
std::cout << "char* data()" << std::endl;
return data_;
}
private:
char data_[512];
};
在我的例子中,我有兩個函數調用。
test t;
const char *t1 = t.data();
char* t2 = t.data();
而我的輸出是char* data()
兩次。有人能解釋我發生了什麼事嗎?爲什麼const char* data() const
從未被稱爲?
感謝您的幫助。
你不能超載不會奇蹟般地發生根據您的結果下了線做什麼的返回值 – StoryTeller
超載。 –
@StoryTeller你可以在const上通過AFAIK重載。我認爲這裏的問題是兩者之間的選擇可能只受測試的常量影響,或者如果它被用作需要const參數的函數的參數(但我不確定後者是如何)。 – Borgleader