C++中const声明的区别

use*_*688 9 c++ parameters syntax pointers const

有什么区别

void func(const Class *myClass)
Run Code Online (Sandbox Code Playgroud)

void func(Class *const myClass)
Run Code Online (Sandbox Code Playgroud)

也可以看看:

可能还有其他人......

mmm*_*mmm 21

区别在于

void func(const Class *myClass)
Run Code Online (Sandbox Code Playgroud)

你指向一个你不能改变的类,因为它是const.但你可以修改myClass指针(让它指向另一个类;这对调用者没有任何副作用,因为它的指针被复制,它只会改变你的本地指针副本)

void func(Class *const myClass)
Run Code Online (Sandbox Code Playgroud)

现在,myClass指向一个可以在您无法更改参数时进行修改的类.


tun*_*nuz 11

在第一个中,您声明了一个接受指向常量Class对象的指针的函数.您无法修改函数内的对象.在第二个中,您将声明一个接受指向非常量Class对象的常量指针的函数.您可以通过指针修改对象,但不能修改指针值本身.

我总是记住这个简单的规则:const总是适用于它左边的东西,如果这个东西不存在,它适用于右边的东西.

另外看一下我一周前问过的这个问题,它指出了一些非常有用的链接来理解const的正确性.


jal*_*alf 5

一个经验法则是从右到左阅读声明:

void func(const Class *myClass) 是指向const类的指针(或严格来说是"指向const的类的指针")

void func(Class *const myClass) 是一个指向类的const指针