为了账号安全,请及时绑定邮箱和手机立即绑定

C ++常量用法说明

C ++常量用法说明

C++
慕慕森 2019-11-05 15:45:08
const int* const Method3(const int* const&) const;有人可以解释每个const的用法吗?
查看完整描述

3 回答

?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

如果将其重写为完全等效的内容,会更容易理解


// v───v───v───v───v───v───v───v───v───v───v───v─┬┐

//                                               ││

//  v──#1    v─#2             v──#3    v─#4      #5

   int const * const Method3(int const * const&) const;

然后从右到左阅读。


#5表示左侧的整个函数声明为const,这表示这一定是成员函数,而不是自由函数。


#4表示左边的指针是const(不能更改为指向其他地址)。


#3表示int左侧的是const(不得更改为其他值)。


#2表示左侧的指针是const。


#1表示int的左侧是const。


放在一起,您可以将其作为const名为的成员函数读取,该成员函数Method3引用指向的const指针int const(const int如果需要,可以引用,然后返回const指向int const(const int)的指针)。



查看完整回答
反对 回复 2019-11-05
?
RISEBY

TA贡献1856条经验 获得超5个赞

首先const T等于T const

const int* const因此等于int const * const

读取其中包含许多const标记和指针的表达式时,请始终尝试从右到左读取它们(应用上面的转换之后)。因此,在这种情况下,返回值是指向constintconst指针。在const这里,使指针本身没有意义,因为返回值不是可以修改的左值。const但是,指定为pointee 可以确保调用方不会修改所返回的int(或的数组intMethod3

const int*const&成为int const*const&,因此它是对指向const的const指针int引用。通过引用传递const指针也没有任何意义-您不能修改引用的值,因为指针为,const并且引用和指针占用相等的存储空间,因此也没有任何空间节省。

最后一个const表示该方法未修改该this对象。this方法主体中的指针将具有(理论上的)声明T const * const this。这意味着一个const T*对象将能够调用T::Method3()


查看完整回答
反对 回复 2019-11-05
  • 3 回答
  • 0 关注
  • 410 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信