C++:const 常量关键字

#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();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>