为什么类型字符的常量指针作为函数?

时间:2012-08-08 01:07:07

标签: c++

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

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

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

3 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

请记住,在C ++中,您无法从函数中返回一堆值。正如他们所说,这会返回一个指针,指向保存一组连续字符的位置。指针是对内存中地址的引用。 当你在大多数时候在课堂上编写一个getValue方法时,你只想告诉那些不在价值范围内的人,而只是作为只读,因为你作为该类是该值的唯一所有者,并且如果值被更改从一个随机的地方而不是一个setValue方法,它可能会导致问题。