2012-08-08 34 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方法,它可能会导致问题。

相关问题