C++之const在类中应用

1.const修饰成员函数

用const修饰的成员函数时,const修饰this指针指向的内存区域,成员函数体内不可以修改本类中的任何普通成员变量,当成员变量类型符前用mutable修饰时例外。

int myFun(void) const //const修饰的是成员函数
{}//函数内部不能修改 普通成员变量  mutable修饰时例外

应用举例

class Data
{
private:
    int data;
    
    mutable int num;
public:
    //遍历 成员的函数 不会去修改成员的值
    //如果函数不会更改成员数据 就让编译器知道 这是一个const函数
    void myPrintData(void) const 
    {
        //data =10000;//err const修饰函数 函数不能操作普通成员变量
        cout<<this->data<<endl;
        //cout<<data<<endl;

        //mutable修饰的成员变量 可以修改
        num = 200;
    }
    
    Data()
    {
        cout<<"无参构造"<<endl;
    }
    Data(int data)
    {
        this->data =data;
        cout<<"有参构造"<<endl;
    }
    Data(const Data &ob)
    {
        this->data = ob.data;
        cout<<"拷贝构造"<<endl;
    }
    ~Data()
    {
        cout<<"析构函数"<<endl;
    }
};
void test02()
{
    Data ob1(100);
    ob1.myPrintData();
}

2.const修饰对象叫常对象

const修饰定义的对象,只能访问类中使用const定义的方法。

class Data
{
private:
    int data;

    mutable int num;
public:
    //遍历 成员的函数 不会去修改成员的值
    //如果函数不会更改成员数据 就让编译器知道 这是一个const函数
    void myPrintData(void) const
    {
        //data =10000;//err const修饰函数 函数不能操作普通成员变量
        cout<<this->data<<endl;
        //cout<<data<<endl;

        //mutable修饰的成员变量 可以修改
        num = 200;
    }

    //编译器认为 普通成员函数 存在修改成员变量 可能
    void setData(int data) const
    {
        //this->data = data;
        return;
    }
    Data()
    {
        cout<<"无参构造"<<endl;
    }
    Data(int data)
    {
        this->data =data;
        cout<<"有参构造"<<endl;
    }
    Data(const Data &ob)
    {
        this->data = ob.data;
        cout<<"拷贝构造"<<endl;
    }
    ~Data()
    {
        cout<<"析构函数"<<endl;
    }
};
void test03()
{
    //常对象
    const Data ob1(200);

    //常对象 只能调用const修饰的函数 遍历成员数据
    ob1.setData(20000);

    ob1.myPrintData();
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值