11.3.4重学C++之【const修饰成员函数】
#include<stdlib.h>
#include<iostream>
#include<string>
using namespace std;
/*
4.3.4 const修饰成员函数
常函数:成员函数后加const(修饰的是this指针,令指针指向的值也不可修改)
常函数内不可修改成员属性
成员属性声明时加关键字mutable后,在常函数中依然可以修改
常对象:声明对象前加const
常对象只能调用常函数
*/
class Person{
public:
int a;
mutable int b;
Person(){
}
void show_person(){
a = 100;
this->a = 100;
// this指针是隐含每一个非静态成员函数内的一种指针,其不需定义,课直接使用
// this指针的本质是指针常量,故该指针的指向不可修改
// 在test()案例中,该this指针:Person * const this,其指向p
}
/*
void show_person()const{ // 常函数
a = 100; // 报错
this->a = 100; // 报错
// 此时 this:const Person * const this
}
*/
void show_person1()const
{
b = 100; // ok
this->b = 200;
}
};
void test(){
Person p;
p.show_person();
p.show_person1();
}
void test2(){
const Person p1; // 常对象
//p1.a = 100; // 报错
p1.b = 300; // ok
//p1.show_person(); // 报错
p1.show_person1(); // ok 常函数
}
int main(){
test();
test2();
system("pause");
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!