2012-08-08 36 views
0

我正在學習C++,我遇到過這個,我不明白這個小東西。爲什麼GetName()函數是一個字符類型的指針,爲什麼它是常量?爲什麼一個類型字符的常量指針作爲函數?

class Derived: public Base 
{ 
public: 
    Derived(int nValue) 
     : Base(nValue) 
    { 
    } 

    const char* GetName() { return "Derived"; } 
    int GetValueDoubled() { return m_nValue * 2; } 
}; 

回答

8

"Derived"字符串文字(看看它)。如果您嘗試修改字符串文字,您會得到未定義的行爲,因此返回類型標記爲const,因此您不會意外修改它。

1

你在看什麼是C-String。它是一個指向chars數組的第一個元素的指針,因爲您不應該編輯字符文字,因此它是const

0

記住,在C++中,你不能從函數返回一堆值。正如他們所說,這將返回一個指向保存一組連續字符的指針。指針是對內存中地址的引用。 當您在大部分時間在類中編寫getValue方法時,您只想讓知道誰在外面的值是什麼,但只是只讀,因爲您作爲類是該值的唯一所有者,並且值從一個隨機的地方更改,而不是從setValue方法,它可能會導致問題。

相關問題