【C++札记】const关键字

C++中const关键字无处不在,我这里做下汇总,作为工具文章方便翻阅。

 

一:修饰数据成员

修饰的成员一单定义初始化后不能再进行修改,如:

const int a = 10;

a =20; //重新赋值直接会报错

当修饰类的成员函数时,先来段错误的代码

 

class Student
{
public:
    Student(int i)
    {
        this->age = i; //age是const类型直接复制会报错
    }
private:
     const int age;
};

解决上面的错误有两种方法

 

方法一:

使用参数列表的形式(推荐使用)

 

class Student
{
public:
    Student(int i):age(i)
    {
    }

private:
     const int age;
};

方法二:

定义age时直接赋值

class Student
{
public:
    Student ();

private:
     const int age = 20;
};

 二:修饰成员函数

在声明之后,实现体之前

格式为:

类型 函数名(参数....) const

const修饰的成员函数不能修改类中的成员函数,函数中只能调用const修饰的函数。

 

class Student
{
public:
    Student (int i ):age(i)
    {

    }

    void update () const
    {
        age = age +1;   //const 修饰的成员函数不能修改类中的成员变量
        display();      //const 修饰的成员函数,函数中只能调用const修饰的成员函数
    }

    void display()
    {
        cout << "age:" << endl;
    }
private:
     int age;
};

三:修饰类对象

const修饰的对象,只能调用const修饰的成员函数

class Student
{
public:
    Student (int i ):age(i)
    {

    }

    void update () const
    {
        cout << "this is update" << endl;
    }

    void display()
    {
        cout << "age:" << endl;
    }
private:
     int age;
};

int main()
{
    const Student stu(30);
    stu.update();
    stu.display();    //const修饰的类对象 只能调用const修饰的成员函数
    return 1;
}

成员函数有无const修饰可以构成重载,非const对象调用时优先调用非const修饰的成员函数,如不构成重载也可以调用const修饰成员函数。

class Student
{
public:
    Student (int i ):age(i)
    {

    }

    void display()
    {
        cout << "void display()" << endl;
    }

    void display() const
    {
        cout << "display() const" << endl;
    }
private:
     int age;
};

int main()
{
    Student stu(30);
    stu.display();

    return 1;
}

 输出结果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农code之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值