const的用法(定义和用途)

在C++中,const关键字的使用在C语言的基础上得到了进一步扩展和丰富,不仅可以用于定义常量,还可以在类中用于定义常量成员变量、常量成员函数以及常量对象。

常量变量(Constant Variables)

  • 定义:常量变量是指一旦初始化后就不能再被修改的变量。

  • 用法

    const int constantValue = 100;

    示例:

    const int constantValue = 100;
    constantValue = 200; // 错误,常量变量不能被修改

常量指针(Pointer to Constant)

  • 定义:指向常量的指针,意味着不能通过该指针修改它所指向的值,但可以改变指针本身指向的地址。

  • 用法

    const int *ptr;
    int const *ptr;

    示例:

    int a = 10;
    const int *ptr = &a;
    *ptr = 20; // 错误,不能通过 ptr 修改它指向的值
    ptr = &b;  // 合法,ptr 可以指向其他地址

指针常量(Constant Pointer)

  • 定义:指针本身是常量,意味着指针一旦初始化后不能再指向其他地址,但可以通过该指针修改其指向对象的值。

  • 用法

    int *const ptr;

    示例:

    int a = 10;
    int *const ptr = &a;
    ptr = &b;  // 错误,ptr 是常量指针,不能改变它指向的地址
    *ptr = 20; // 合法,可以通过 ptr 修改 a 的值

常量成员变量(Const Member Variables)

  • 定义:常量成员变量在对象创建时必须初始化,并且在对象的生命周期内不能修改。初始化通常在构造函数的初始化列表中进行。

  • 用法

    class Demo {
    public:
        Demo(int v = 0) : val(v), cval(v) {}
    ​
        void setval(int v) {
            val = v;
        }
    ​
        int getval() const {
            return val;
        }
    ​
    private:
        int val;
        const int cval;
    };

常量成员函数(Const Member Functions)

  • 定义:常量成员函数表示这个函数不能修改对象的任何成员变量,并且只能调用其他const成员函数。

  • 用法

    class Demo {
    public:
        Demo(int v = 0) : val(v), cval(v) {}
    ​
        void setval(int v) {
            val = v;
        }
    ​
        int getval() const {
            return val;
        }
    ​
        void print() const {
            // cval = 10; // 错误,不能修改成员变量
            // setval(888); // 错误,const成员函数不能调用非const方法
            
            std::cout << getval() << std::endl;  // const成员函数能调用const函数
            std::cout << "val: " << val << ", cval: " << cval << std::endl;
        }
    ​
    private:
        int val;
        const int cval;
    };

常量对象(Const Objects)

  • 定义:常量对象只能调用const成员函数,不能调用非const成员函数。

  • 用法

    int main() {
        const Demo obj(10);
        // obj.setval(20); // 错误,不能调用非const成员函数
        std::cout << obj.getval() << std::endl; // 可以调用const成员函数
        obj.print();
        return 0;
    }

总结

  • 常量指针(Pointer to Constant):指针指向的值是常量,不能通过该指针修改值,但可以改变指针的指向。

  • 指针常量(Constant Pointer):指针本身是常量,不能改变指针的指向,但可以通过指针修改所指向的值。

  • 常量成员变量(Const Member Variables):在对象创建时初始化,之后不能修改。

  • 常量成员函数(Const Member Functions):不能修改对象的成员变量,只能调用其他const成员函数。

  • 常量对象(Const Objects):只能调用const成员函数,不能调用非const成员函数。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值