面试前必须要知道的C++ const用法
发布时间:2020-03-11 17:21:52 所属栏目:资源 来源:博客园
导读:本文主要介绍const修饰符在C++中的主要用法,下面会从两个方面进行介绍:类定义中使用const、非类定义中使用const 1. 非类定义中使用const 非类定义中使用const是指:在除了类定义以外的场景中使用const。 1.1 变量 顶层const:变量本身是个常量 底层const
本文主要介绍const修饰符在C++中的主要用法,下面会从两个方面进行介绍:类定义中使用const、非类定义中使用const 1. 非类定义中使用const 非类定义中使用const是指:在除了类定义以外的场景中使用const。 1.1 变量 顶层const:变量本身是个常量 底层const:变量所指向的对象是个常量 用于声明引用的const都是底层const 1.2 函数 Tips: 引用只是一个变量的别名,不是对象,因此引用不会占用存储空间 调用一个返回引用的函数得到左值,其他返回类型得到右值 2. 类定义中使用const 2.1 类成员 类定义中不能进行初始化,因为在头文件中定义只是一个声明,并没有分配真正空间,因此变量是不存在的,因此是不能赋值的。 在类定义外部,const定义的变量是不能被赋值 问题: 类定义中不能赋值,类定义外部也不能赋值,但是又必须赋值,这可如何是好? 解决方案: 在构造函数后的参数初始化列表中初始化 将const变量同时声明为 static 类型进行初始化 2.2 类成员函数 Tips: 成员函数都有一个额外的隐式参数this,this的值是调用该函数的对象地址,因此this是一个指针。 普通成员函数的this指针类型是:Test* const this const成员函数的this指针类型是:const Test* const this 因为两个函数的this指针类型不同,所以display有两个重载函数。 作用: 为了在函数体内禁止修改对象,可以通过定义const成员函数来实现。 Others: 下图是截自C++ primer中的片段,请重点关注两个display函数的返回值: display 普通成员函数的返回值是:普通引用 display const成员函数的返回值是:常量引用 造成返回值不同的原因就是:this指针类型不同 返回*this (编辑:应用网_阳江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |