c语言编程笔录

首页 >   > 笔记大全

笔记大全

常见的c中const常量用法分析讲解

更新时间:2023-10-03

第一段:const常量的概念和用途

在C++中,const常量是指一旦被初始化后,就不能被修改的变量。下面是一个简单的示例:

const int x = 10;   // 声明x为常量,值为10
x = 20;             // 错误:无法修改常量的值

在C++中,const常量可以用于多种情况。它可以用于延长变量的寿命、增强类型检查、防止修改数据等。

第二段:常量指针和指针常量

常量指针和指针常量是两种不同的概念。常量指针是指指针本身是一个常量,不能修改指针指向的地址,但可以修改指针指向的变量值。指针常量是指指针所指向的地址是一个常量,不能修改指针指向的变量值,但可以修改指针指向的地址。下面是一个简单的示例:

const int* p = &x;  // 指向常量的指针
int* const q = &y;  // 常量指针

在这里,指针p所指向的地址是一个常量,不能通过p修改x的值,但可以通过其他方式修改x的值。指针q是一个常量指针,不能修改q所指向的地址,但可以通过q修改y的值。

第三段:const成员函数和const对象

在C++中,类中的成员函数可以被声明为const类型,表示该函数不修改类的任何成员变量。这种成员函数被称为const成员函数。const成员函数可以被const对象调用,而不能被非const对象调用。下面是一个简单的示例:

class MyClass {
public:
    void func() const;      // 声明为const成员函数
    void anotherFunc();
};

void MyClass::func() const {
    // 不修改任何成员变量
}

void MyClass::anotherFunc() {
    // 修改成员变量
}

int main() {
    const MyClass obj1;     // 常量对象
    MyClass obj2;           // 非常量对象

    obj1.func();            // 可以调用const成员函数
    obj2.func();            // 错误:无法调用const成员函数

    obj1.anotherFunc();     // 错误:不能修改const对象的成员变量
    obj2.anotherFunc();     // 可以调用非const成员函数
}

第四段:常引用和引用常量

常引用和引用常量也是两种不同的概念。常引用指的是引用本身是常量,不能通过引用修改变量值,但可以直接修改原变量的值。引用常量则是指原变量是常量,不能通过引用或其他方式修改该变量的值,但可以通过引用访问他的值。下面是一个简单的示例:

int x = 10;
const int& r1 = x;      // 常引用
int& const r2 = x;      // 错误:不能定义指向常量的引用
const int& const r3 = x;// 错误:不能定义指向常量的常引用

在这里,r1是一个常引用,不能通过r1修改x的值,但可以通过x直接修改。r2由于语法错误无法定义。r3也由于语法错误无法定义。

总结:在C++中,const常量可以防止数据被修改,可以用于增强类型检查和延长变量寿命。常量指针和指针常量是两种不同的概念,const成员函数和const对象、常引用和引用常量也是两种不同的概念。使用const常量需要谨慎考虑其使用场景和具体需要,才能发挥出它的最大作用。