有什么区别
void func(const Class *myClass)
和
void func(Class *const myClass)
也可以看看:
C++ const问题
在C++中使用"const"的数量是多少?
可能还有其他人......
区别在于
void func(const Class *myClass)
你指向一个你不能改变的类,因为它是const.但你可以修改myClass指针(让它指向另一个类;这对调用者没有任何副作用,因为它的指针被复制,它只会改变你的本地指针副本)
void func(Class *const myClass)
现在,myClass指向一个可以在您无法更改参数时进行修改的类.
在第一个中,您声明了一个接受指向常量Class对象的指针的函数.您无法修改函数内的对象.在第二个中,您将声明一个接受指向非常量Class对象的常量指针的函数.您可以通过指针修改对象,但不能修改指针值本身.
我总是记住这个简单的规则:const
总是适用于它左边的东西,如果这个东西不存在,它适用于右边的东西.
另外看一下我一周前问过的这个问题,它指出了一些非常有用的链接来理解const的正确性.
一个经验法则是从右到左阅读声明:
void func(const Class *myClass)
是指向const类的指针(或严格来说是"指向const的类的指针")
void func(Class *const myClass)
是一个指向类的const指针