0

我正在学习 C++,我遇到过这个,我不明白这个小东西。为什么 GetName() 函数是一个字符类型的指针,为什么它是常量?

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

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

3 回答 3

8

"Derived"是一个字符串文字(查找它)。如果您尝试修改字符串文字,您会得到未定义的行为,因此会标记返回类型,const以免您意外修改它。

于 2012-08-08T01:08:16.543 回答
1

您正在查看的是C-String。它是指向 数组的第一个元素的指针,chars因为const您不应该编辑字符文字。

于 2012-08-08T01:09:00.413 回答
0

请记住,在 C++ 中,您不能从函数返回一堆值。正如他们所说,这将返回一个指向保存一组连续字符的位置的指针。指针是对内存中地址的引用。当您在类中编写 getValue 方法时,大多数时候您只想让知道值之外的任何人,但只是只读的,因为您作为类是该值的唯一所有者,如果值被更改从随机位置而不是从 setValue 方法可能会导致问题。

于 2012-08-08T01:15:27.027 回答