#include <string>
#include <iostream>
//const 伪关键字 相当于承诺 承诺某些东西不会改变 简化代码
//mutable 允许函数是常量方法,但可以修改变量
class Entity
{
private:
int m_X,m_Y;
// int* m_X,*m_Y;//如果m_Y不加*,则只有紧挨着*的为指针,其他还是原类型
mutable int var;//表示可以改变的变量,用于调试
public:
//getter setter 方法
int GetX()const// 常量调用常函数,去掉const,e.GetX()会报错,因为两个都是const
{
//m_X=2;//会报错,加了const 不能修改
var=2;//mutable是关键
return m_X;
}//表示不能修改任何类以及成员变量 相当于当前方法只能读
//const int* const GetX()const//返回一个不能被修改的指针 {return m_X;}
void SetX(int x)
{
m_X=x;
}
};
void PrintEntity(const Entity& e)//常量引用省空间 引用的内容 const Entity& e表示可以任意且仅能调用const标记的函数
{
//e=Entity();//报错 不能重新赋值
std::cout<<e.GetX()<<std::endl;
}
int main()
{
const int a=5;//相对于声明的是常量
// a=2; 会报错 常量不能改变
int* b=new int;
//改变指针存储的内容 变为const 仅表示不能以这种方式改变指针存储的内容,方向可变
//const int* b=new int; //int const* b=new int; //两者等价
// int*const b=new int; //这种情况,不可以改变指向,可以改变存储的内容
// const int* const b=new int; //表示两种方式都不可以改变
*b=2;//改变指针存储的内容
std::cout<<*b<<std::endl;
b=(int*)&a;//改变指针指向的方向 把a的值的地址赋值给b,此时b指向a的地址,*b为a 绕开了const
std::cout<<*b<<std::endl;
Entity e;
std::cin.get();
}
C++:const 常量关键字
最新推荐文章于 2025-01-02 11:46:30 发布