C++类与对象--const修饰符

本文详细介绍了C++中const修饰符的使用,包括常数据成员、常成员函数及其重载,以及常对象的概念。const数据成员只能在初始化列表中赋值并不可修改,常成员函数承诺不修改数据成员且只能调用const函数。常对象只能调用const成员函数,体现了C++的封装特性。通过实例展示了const如何构成函数重载,并强调了const对象调用函数的选择规则。
摘要由CSDN通过智能技术生成

1. 常数据成员

const 修饰类的成员变量,表示成员常量,不能被修改,同时它只能在初始化列表中赋值(c11 中支持类中实始化)。可被 const 和非 const 成员函数调用,而不可以修改。

class A
{
public:
	A():iValue(199)
	{}
private:
	const int iValue;
};

2. 常成员函数

2.1 const修饰函数的意义

承诺在本函数内部不会修改类内的数据成员,不会调用其它非 const 成员函数。

2.2 const修饰函数位置

void dis() const
{}

2.3 const构成函数重载

#include <iostream>
using namespace std;
class A
{
public:
    A():x(199),y(299)
    {}
    void dis() const //const 对象调用时,优先调用
    {
        //input(); 不能调用 非 const 函数,因为本函数不会修改,无法保证所调的函数也不会修改
        cout<<"x "<<x<<endl;
        cout<<"y "<<y<<endl;
        //y =200; const 修饰函数表示承诺不对数据成员修改。
    }
    void dis() //此时构成重载,非 const 对象时,优先调用。
    {
        y = 200;
        input();
        cout<<"x "<<x<<endl;
        cout<<"y "<<y<<endl;
    }
    void input()
    {
        cin>>y;
    }
private:
    const int x;
    int y;
};
int main()
{
    A a;
    a.dis();
    // const A a;
    // a.dis();
    return 0;
}

输入123
输出结果

2.3 小结

1,如果 const 构成函数重载,const 对象只能调用 const 函数,非 const 对象优先调用非 const 函数。
2,const 函数只能调用 const 函数。非 const 函数可以调用 const 函数。
3,类体外定义的 const 成员函数,在定义和声明处都需要 const 修饰符

3. 常对象

const A a;
a.dis();

3.1 小结

1,const 对象,只能调用 const 成员函数。
2,可访问 const 或非 const 数据成员,不能修改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值