c++ 类成员函数后加const
2021/4/10 14:25:09
本文主要是介绍c++ 类成员函数后加const,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、c++类成员函数后加const作用
如下有一个YYTest类,在成员函数readValue中试图改变成员变量a的值是非法的。用const修饰的成员函数中不能改变成员变量的值,如果摸个成员函数只是获取数据,可以用const修饰,提高代码健壮性。用const修饰的成员函数叫“常量成员函数”。
二、类中的this指针
类的成员函数中,编译器会默认传入一个指针this,如果访问一个成员变量a,实际上是通过this->a访问的。在下面的test函数中入参实际是这样的void test(YYTest *const this),编译器会默认传入一个YYTest类型的常量指针this。
从程序运行结果中可以看出,this的值就是yy的地址。
class YYTest { public: YYTest(int n) { a = n; } ~YYTest() { ; } void test() { printf("a = %d\n", a); printf("this->a = %d\n", this->a); printf("this = 0x%x\n", this); } private: int a; }; int main(void) { YYTest yy(2); printf("yy addr is 0x%x\n", &yy); yy.test(); system("pause"); return 0; }
程序运行结果:
三、常量成员函数的真实含义
下面的YYTest类中的常量成员函数readValue中的默认this入参是这样的:int readValue(const YYTest *const this),用const修饰后的readValue函数this指针就变成了既是常量指针又是指针常量,对this本身和指向的内容都不能改变,所以在readValue里改变成员变量的值是非法的。
class YYTest { public: YYTest(int n) { a = n; } ~YYTest() { ; } int readValue() const { return a; } private: int a; };
这篇关于c++ 类成员函数后加const的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享