C++ Const指针声明

Wes*_*ley 19 c++ pointers constants

我正在审查一些代码,我遇到了一些我不熟悉的代码.经过一番搜索后,我无法想出为什么要这样做或者这个声明的好处.

myClass const * const myPtr = myClass->getPointer();
Run Code Online (Sandbox Code Playgroud)

这是const指针的声明还是完全不同的东西?

Set*_*gie 28

这意味着" myPtr是一个const指向" 的指针const myClass.这意味着您既不能通过此指针修改指针指向的内容,也不能在指针初始化之后将指针指向其他位置(通过返回值myClass->getPointer()).所以,是的,你基本上是正确的,除了它还指向一个const对象(据你所知;它可能真的是非const下面的).

请记住,它const适用于左侧的项目(或者如果左侧没有项目,则右侧的项目).第一个constmyClass const(你不能修改指针指向的地方),第二个const*const(你不能修改指针本身).

  • "请记住,const适用于左侧的项目(或者如果左侧没有项目,右边的项目)." - 这是我在分类const时看到的最好,最简单,最简单的经验法则. (6认同)

Mat*_*vis 23

在某些情况下,您可能会看到它的写法如下:

const myClass * const myPtr = myClass->getPointer(); 
Run Code Online (Sandbox Code Playgroud)

这两个是等价的,即一个指向常量对象的常量指针.我更喜欢你所显示的语法,因为从右到左阅读新手时更容易理解:

Object * const obj;        // read right-to-left:  const pointer to Object
Object const * obj;        // read right-to-left:  pointer to const Object
Object const * const obj;  // read right-to-left:  const pointer to const Object 
Run Code Online (Sandbox Code Playgroud)