首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C++中const声明的区别

在C++中,const关键字用于声明一个常量,即其值在初始化后无法被修改。const可以用于修饰变量、指针、引用、成员函数等。下面详细介绍const的几种声明方式及其含义。

  1. 修饰基本类型

const修饰基本类型时,表示该变量为常量,不能进行修改。例如:

代码语言:cpp
复制
const int a = 10;
a = 20; // 编译错误,不能修改常量的值
  1. 修饰指针

const可以修饰指针,分为指向常量的指针和常量指针。指向常量的指针表示该指针指向的对象不能被修改,例如:

代码语言:cpp
复制
int a = 10;
const int* p1 = &a; // 指向常量的指针
*p1 = 20; // 编译错误,不能通过指向常量的指针修改对象的值

常量指针表示该指针本身是一个常量,即指针的地址不能被修改,例如:

代码语言:cpp
复制
int a = 10;
int b = 20;
int* const p2 = &a; // 常量指针
p2 = &b; // 编译错误,不能修改常量指针的值
  1. 修饰引用

const可以修饰引用,表示该引用所引用的对象不能被修改。例如:

代码语言:cpp
复制
int a = 10;
const int& r = a; // 引用常量
r = 20; // 编译错误,不能通过引用常量修改对象的值
  1. 修饰成员函数

const可以修饰成员函数,表示该成员函数不会修改类的成员变量。例如:

代码语言:cpp
复制
class MyClass {
public:
    int a;

    MyClass(int a) : a(a) {}

    int getA() const {
        return a;
    }

    void setA(int a) {
        this->a = a;
    }
};

MyClass obj(10);
cout<< obj.getA()<< endl; // 输出10
obj.setA(20);
cout<< obj.getA()<< endl; // 输出20

在上面的例子中,getA()函数被声明为const,表示该函数不会修改类的成员变量,因此可以通过const引用或指针调用该函数。而setA()函数没有被声明为const,因此只能通过非const引用或指针调用该函数。

总之,const在C++中有多种声明方式,用于声明常量、指针、引用和成员函数等。通过使用const,可以提高代码的安全性和可维护性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券