#include <iostream>
#include <string>
using namespace std;
/*
常函数:
1.成员函数加const后我们称这个函数是常函数
2.常函数不可以修改成员属性
3.成员属性声明加关键字mutable后,在常函数中依然可以修改
常函数:
1.声明对象加const称该对象为常对象
2.常对象只能调用常函数 常匹配常
*/
class Person
{
public:
int age;
mutable int b; // mutable 易变的 这个b是一个特殊的变量 在常函数中,也可以修改这个数值
void showAge()
{
age = 120;
cout << "Age is " << age << endl;
}
// const Perosn * const this; 这样的话指针指向的数值也是不能改变的
void ShowAgeConst() const
{
// 等价于this -> age = age; this指针的本质是指针常量 指针指向的对象是不可以修改的
// age = 10000; // 系统提示不能修改左边数值 age是只读对象
// this = NULL; 这个是错误的因为this指针不能修改指向的对象
}
void ShowBConst() const // 常函数
{
this->b = b; // 此时这个b是可以修改的
}
void fun()
{
age = 220;
}
};
void test()
{
Person p;
p.showAge();
}
void test1()
{
Person p;
p.ShowAgeConst();
}
void test2()
{
const Person p; // 常对象
p.age = 100l; // 这个是不能修改的
p.b = 2000; // 这个是可以修改的
// 常对象只能调用常函数
p.ShowBConst();
p.fun(); // 常对象不能调用普通成员函数的
}
int main()
{
test();
test1();
return 0;
}
C++常函数
最新推荐文章于 2024-05-17 13:41:52 发布
本文介绍了C++中的常量和常函数概念。常函数不允许修改成员属性,除非属性被声明为mutable。常对象只能调用常函数,且其属性不可变,但mutable修饰的属性在常函数中仍可修改。示例代码展示了常函数的使用以及常对象的行为限制。
摘要由CSDN通过智能技术生成