当前位置:  开发笔记 > 编程语言 > 正文

C++中const声明的区别

如何解决《C++中const声明的区别》经验,为你挑选了3个好方法。

有什么区别

void func(const Class *myClass)

void func(Class *const myClass)

也可以看看:

C++ const问题

在C++中使用"const"的数量是多少?

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



1> mmmmmmmm..:

区别在于

void func(const Class *myClass)

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

void func(Class *const myClass)

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



2> tunnuz..:

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

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

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



3> jalf..:

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

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

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

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有