首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >常量正确性:常量char常量*常量填充常量(// GetName );

常量正确性:常量char常量*常量填充常量(// GetName );
EN

Stack Overflow用户
提问于 2009-12-03 03:58:25
回答 8查看 4.6K关注 0票数 6

被贴上了家庭作业的标签,因为这是我写的一个期中考试的问题,我不明白答案。我被要求在下面的声明中解释每个const的目的:

代码语言:javascript
复制
const char const * const GetName() const { return m_name; };

那么,这些常量的解释是什么呢?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2009-12-03 04:04:16

从右边拿过来。;之前的一个告诉客户端这是一个设计级常量,即它不会改变对象的状态。(可以将其视为只读方法。)

好的,现在是返回值:

代码语言:javascript
复制
const char const *const

这是一个指向okay的常量指针...我们开始吧!您有一个额外的const --一个语法错误。以下代码是等效的:const TT const。如果你取出一个const,你会得到一个指向常量字符的常量指针。这有帮助吗?

票数 6
EN

Stack Overflow用户

发布于 2009-12-03 04:02:18

你的const比语法上允许的多了一个,代码将无法编译。删除"char“之后和"*”之前的"const“。另外,最后一个const必须出现在函数体之前。从右到左阅读这样的东西是很有帮助的。

代码语言:javascript
复制
const char * const GetName() const { return m_name; };

您有一个const函数(即该函数不会改变类的状态),它返回一个指向const char的const指针。

票数 2
EN

Stack Overflow用户

发布于 2009-12-03 04:05:22

(1)const char (2)const * (3)const GetName() { return m_name;} (4)const;

  1. 字符数组的内容是const.当你返回对象成员的指针时,这是很好的。由于您为第三方提供了指向成员的指针,因此您希望防止它从外部更改。
  2. 此表单不经常使用,本质上与(1)
  3. 我们指向字符数组的指针是const相同,因此您不能更改指针指向的位置。
  4. 它限定了GetName()本身,这意味着该方法也不会更改它所应用的类。因此,只能对这种类型的常量对象调用它。此表单通常用作GetName(...)const.

正如已经在另一个答案中提到的从右到左“记住”它的诀窍:

  • const T*-指向const T
  • T *的指针-指向T

的const指针

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1835399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档