C++中const关键字的多种用法

在C++中,const 是一个关键字,用于声明常量。它可以用于多种情况,包括声明常量变量、常量指针、以及成员函数中的常量性。

1.常量变量

通过在变量声明前加上 const 关键字,可以创建一个不可修改的常量。

例如:

const int x = 10;

2.常量指针

const 还可以用于声明指向常量的指针,这意味着指针所指向的值不能被修改,但指针本身可以被修改。例如:

int y = 5;
const int *ptr = &y;

在这个例子中,ptr 是一个指向常量整数的指针,因此不能通过 ptr 来修改 y 的值,但可以通过其他途径修改 y

3.常对象 const

1) 常函数中的 this 是被 const 修饰的,在常函数中成员变量不能被修改 ;
2) 常函数只能调用常函数;
语法:在成员函数后面加const关键字
示例:
#include <iostream>
using namespace std;
class Person
{
    int age;
public:
    Person(){}
    Person(int a):age(a){}
    //常函数:1.不可以改变成员变量的值 2.常函数只能调用常函数
    void show() const
    {
        //++age;值不可以修改
        cout<<age<<endl;
        setAge(25);
    }
    void setAge(int a) const
    {
        //age = a;值不可以修改
        cout<<age<<endl;
    }
};

int main(int argc, const char *argv[])
{
    Person p(1);
    p.show();
    return 0;
}

4.常对象 

语法:1.const 类名 对象名 ( 实参 )
           2.类名 const 对象名 ( 实参 )
注意常对象:
(1) 成员变量必须有初值
(2) 只能调用常成员函数
功能:希望对象所有成员的值不被修改
示例:
#include <iostream>
using namespace std;
class Person
{
    int age;
public:
    Person(){}
    Person(int a):age(a){}
    /*void show() const //常函数:1.不可以改变成员变量的值
    {
        cout<<"const....."<<age<<endl;
    }*/
    void show()//自由的函数
    {
        cout<<"show..."<<age<<endl;
    }
};

int main(int argc, const char *argv[])
{
    Person p(1);//1.自由的对象首选调用自由的函数,没有自由的函数,可以调用常函数
    p.show();
    const Person p1(10);//2.常对象:只能调用常函数,不能调用自由的函数
    Person const p2(20);
    p1.show();
    return 0;
}

5.对比

* 普通对象: 1. 可以调用常函数
* 2. 普通函数和常函数可以构成函数的重载(特殊的重载)
* 3. 普通函数和常函数同时存在时,普通的对象调用自由的函数
*
* 常对象: 1. 只能调用常函数 , 不能调用自由的函数
* 2. 注意:成员变量要有初值

6.mutable 关键字

作用:mutable 修饰的成员变量可以在常函数中修改。
示例:
#include <iostream>
using namespace std;
class Person
{
private:
    string name;
    int age;
    mutable int a;
public:
    Person(int age,string name,int a):age(age),name(name),a(a){}
    void show()
    {
        cout<<age<<" "<<name<<endl;
    }
    void show() const
    {
        ++a;
        cout<<age<<"$$$"<<name<<" "<<a<<endl;
    }
};

int main()
{
    Person p(20, "小明",10);
    p.show();
    const Person p2(30, "小强",10);
    p2.show();
}

以上就是const的基本用法,本次代码分享到此结束,谢谢大家观看,希望大家点点赞,点点关注,谢谢大家!

  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值