基础知识-const的作用

本文详细介绍了C++中const关键字的多种用途,包括定义常量、修饰指针、函数参数、函数返回值、类的成员函数和成员变量等。通过示例解释了const如何影响代码行为,并强调了const在提高代码安全性和效率方面的重要性。
摘要由CSDN通过智能技术生成
  • const用于定义常量

const 代表改表不可修改,只能一开始赋初值
必须要初始化,除非加extern

const int class_size = 12;
int finalGrade[class_size];
int x;
cin >> x;
const int size = x;
double classAverage[size];
  • 修饰指针

如果const位于*的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;
如果const位于*的右侧,const就是修饰指针本身,即指针本身是常量。
const指针代表不能通过该指针去修改内存,不代表内存是const

  • const修饰函数参数
void fun(A const &a);  //提高效率。用“引用传递”不需要产生临时对象,省了临时对象的构造、复制、析构过程消耗的时间。但光用引用有可能改变a,所以加const
  • const修饰函数的返回值
    如给“指针传递”的函数返回值加const,则返回值不能被直接修改,且该返回值只能被赋值给加const修饰的同类型指针。
  • const修饰类的成员函数(函数定义体)

任何不会修改数据成员的函数都应用const修饰,这样当不小心修改了数据成员或调用了非const成员函数时,编译器都会报错。
const修饰类的成员函数形式为:int GetCount(void) const;

  • 修饰类成员变量

用const修饰的类成员变量,只能在类的构造函数初始化列表中赋值,不能在类构造函数体内赋值。

class A
{
publicA(int x) : a(x)  // 正确
    {
         //a = x;    // 错误
    }
privateconst int a;
};
  • 修饰类成员函数

用const修饰的类成员函数,在该函数体内不能改变该类对象的任何成员变量, 也不能调用类中任何非const成员函数。
一个函数后面有const代表this是const

其构成了overload,所以会执行带有const的函数

#include <iostream>
using namespace std;
class a
{
    int i;
public:
    a():i(0){}
    void f()
    {
        cout << "f()" << endl;
    }
    void f() const
    {
        cout << "f() const" << endl;
    }
};
int main()
{
    const a b;
    b.f();
    return 0;
}
  • 修饰类对象

用const修饰的类对象,该对象内的任何成员变量都不能被修改。
因此不能调用该对象的任何非const成员函数,因为对非const成员函数的调用会有修改成员变量的企图。

class A
{
 public:
    void funcA() {}
    void funcB() const {}
};
int main
{
    const A a;
    a.funcB();    // 可以
    a.funcA();    // 错误
    const A* b = new A();
    b->funcB();    // 可以
    b->funcA();    // 错误
}

因为ip是可修改的,所以那是错的
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值