C++之const在类中应用

本文详细介绍了C++中const修饰符的使用,包括const修饰成员函数和const修饰对象的概念。通过具体示例,解释了如何利用const保护类成员不被修改,以及常对象的特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值