我知道第二恒定关键字告诉函数是恒定的const char * classname :: getname()const?什么是第一个const关键字的含义?
class Person{
char *name;
int age;
public:
const char* GetName() const;
int GetAge() const;
};
我知道第二恒定关键字告诉函数是恒定的const char * classname :: getname()const?什么是第一个const关键字的含义?
class Person{
char *name;
int age;
public:
const char* GetName() const;
int GetAge() const;
};
const char* GetName() const;
的const
关键字中第一次出现上述语句是函数GetName()
的返回值的数据类型,它也是一个常量函数。
这意味着,通过GetName()
返回的值将是:
char
const
值由于返回值将是const
,GetName()
会收到一个指向常量值的指针。所以,如果您有:
Person object;
const char* point = object.GetName();
*point
将指向一个恒定值char
。
不应该是'const char * point = object.GetName();'在你的例子中? – zett42
您指定由函数返回的指针的指针,指向const
char
这意味着该函数返回指向常量char
的指针。以下是在C++中使用const
关键字的好消息。
正如上面已经解释的那样,它说const的指针。它只能用于const指针。
const char * p = GetName(); //Compiled successfully
char * p = getName(); //compilation error... however you can remove using const_cast)
const char*
反映char*
是恒定的。因此,下面的行会给出错误: -
*p = 'c';
但是在这里P不是恒定的。所以,你可以这样写: -
char ch;
p = &ch;
通常,当函数返回值,我们关注的值(如它不应该被修改)。我希望这会有所帮助。
没有它,返回类型将是非const的char型指针;这不一样。 – songyuanyao