#include <iostream>
using namespace std;
class Person
{
public:
Person()
{}
void showPerson()const//加了修饰只读属性的const关键字 则为常函数
{
//m_A = 100;//报错 表达式必须是可修改的左值
//相当于 this->m_A = 100;
//this指针的本质是一个指针常量 指针常量的指向是不可以修改的
//当初始化了一个对象,并在成员函数里面用到了对象,相当于Person * const this
//当this = null 这样的情况是不允许的 因为指针常量的指向是不可以被修改的
//如果我们想this指针指向的值也不可以修改 则 const Person * const this
//同理 当我们用const修饰了成员函数 则this指针指向的值也是不可以修改的
m_B = 123;//不报错,因为加了关键字mutable 表示这个变量是特殊的
}
void func()
{
}
int m_A;
mutable int m_B;
};
void test01()
{
//const Person p1;
//没有提供的默认构造函数的情况下默认初始化const类型为“const Person”的对象
const Person p1;
//p1.m_A = 100; //常对象不允许修改属性
p1.showPerson();//可以调用常函数,但是在常函数中不可以修改属性,除特殊属性mutable
//p1.func();//常对象不可以调用普通成员函数 因为在普通成员函数中对象的值是可以被修改的 和常冲突
}
int main()
{
//const修饰成员函数 //const 修饰只读状态的关键字
//常函数
//成员函数后加const后称这个函数为常函数
//常函数内不可以修改成员属性
//成员属性声明时加关键字mutable后 在常函数中依然可以修改
//常对象
//声明对象前加const关键字称该对象为常对象
//常对象只能调用常函数
cout << "Hello World!" << endl;
return 0;
}
C++ 常对象 常函数 学习笔记
最新推荐文章于 2024-06-15 18:06:06 发布