我正在学习C ++而且我遇到过这个,我不明白这个小东西。为什么GetName()函数是一个字符类型的指针,为什么它是常量?
class Derived: public Base
{
public:
Derived(int nValue)
: Base(nValue)
{
}
const char* GetName() { return "Derived"; }
int GetValueDoubled() { return m_nValue * 2; }
};
答案 0 :(得分:8)
"Derived"
是字符串文字(查找)。如果您尝试修改字符串文字,则会得到未定义的行为,因此返回类型标记为const
,因此您不会意外地修改它。
答案 1 :(得分:1)
您所看到的是C-String。它是指向chars
数组的第一个元素的指针,并且是const
,因为您不应该编辑字符文字。
答案 2 :(得分:0)
请记住,在C ++中,您无法从函数中返回一堆值。正如他们所说,这会返回一个指针,指向保存一组连续字符的位置。指针是对内存中地址的引用。 当你在大多数时候在课堂上编写一个getValue方法时,你只想告诉那些不在价值范围内的人,而只是作为只读,因为你作为该类是该值的唯一所有者,并且如果值被更改从一个随机的地方而不是一个setValue方法,它可能会导致问题。