C++中的常量介绍

C++中的常量介绍

在C++中,常量是一个固定的值,它在程序执行期间不会发生改变。常量可以分为:

1.字面常量

2.符号常量:符号常量是通过标识符来表示的常量值,在程序中使用时要先进行定义。使用符号常量的好处是可以给常量起一个具有描述性的名字,方便理解和维护代码。在C++中,我们通常使用const关键字来定义符号常量。

3.枚举常量。

字面常量

字面常量是指直接出现在代码中的常量值。例如,整数常量10、浮点数常量3.14、字符常量'A'等都属于字面常量。字面常量的值在编译时就已经确定,并且不能被修改。

符号常量

符号常量是通过标识符来表示的常量值,在程序中使用时要先进行定义。使用符号常量的好处是可以给常量起一个具有描述性的名字,方便理解和维护代码。在C++中,我们通常使用const关键字来定义符号常量。

在C++中,符号常量的定义语法有两种方式:使用#define预处理指令和使用const关键字。

1.使用#define预处理指令定义常量:

#define 常量名 值

例子:

#define PI 3.14159

#define MAX_VALUE 100

用#define定义的常量是在编译前进行文本替换,没有类型限制,可以用于定义任何类型的常量。

2.使用const关键字定义常量:

const 类型 常量名 = 值;

例子:

const int MAX_VALUE = 100;

const double PI = 3.14159;

使用const定义的常量有类型限制,可以用于定义任何类型的常量,也可以用于定义对象常量【注】。

两种方式都可以用来定义常量,选择使用哪种方式主要取决于个人的编程习惯和需求。一般推荐使用const关键字定义常量,因为它具有类型限制,更安全、更可读、更易于维护。

【注:使用const关键字定义常量,不仅可以定义基本数据类型(如int、float等)的常量,也可以定义对象常量。

使用const关键字定义对象常量示例:

#include <iostream>
using namespace std;

class MyClass {
public:
    int value;

    MyClass(int v) : value(v) {}
    void printValue() const {
        cout << "Object value: " << value << endl;
    }
};

int main() {
    const int myConstInt = 10;  // 定义一个整型常量
    cout << "Constant integer: " << myConstInt << endl;

    const MyClass myConstObj(20); // 定义一个对象常量
    myConstObj.printValue();      // 调用对象的成员函数,但不能修改对象的值

    return 0;
}

上述代码中,首先使用const关键字定义了一个整型常量myConstInt和一个对象常量myConstObj。在使用对象常量时,我们需要注意以下几点:

对象常量必须在声明时进行初始化,并且不能在后续的代码中对其进行修改。

对象常量可以调用类的成员函数,但这些成员函数必须被标记为const成员函数,以确保在函数内部不会修改对象的状态。

在示例中,定义了一个名为MyClass的类,它有一个整型成员变量value和一个printValue()成员函数,用于打印对象的值。在main函数中,我们使用const关键字创建了一个对象常量myConstObj,并调用了它的printValue()成员函数。

需要注意的是,虽然对象常量本身不能被修改,但如果对象内部有可变成员(非const成员),则这些成员仍然可以被修改。在上述示例中,我们没有定义任何const成员变量,因此通过myConstObj对象仍然可以修改value的值。要确保对象的完全不可修改性,还需要将对象的成员变量也声明为const。

枚举常量

枚举常量是一组具有命名值的符号常量。它们用于定义一个新的数据类型,其中每个枚举常量都可以具有不同的整数值。枚举常量的语法如下:

enum EnumName {

    Constant1,

    Constant2,

    Constant3,

    // ...

};

在上面的代码中,我们使用enum关键字定义了一个新的枚举类型EnumName,并列出了一些枚举常量Constant1、Constant2、Constant3等。默认情况下,第一个枚举常量的值为0,后续的枚举常量依次递增。

面是一个示例,展示了如何定义和使用枚举常量:

#include <iostream>
using namespace std;

enum Season {
    Spring,
    Summer,
    Autumn,
    Winter
};

int main() {
    Season currentSeason = Summer;

    if (currentSeason == Summer) {
        cout << "It's summer!" << endl;
    } else {
        cout << "It's not summer." << endl;
    }

    return 0;
}

示例中,定义了一个枚举类型Season,其中包含了四个枚举常量:Spring、Summer、Autumn和Winter。在main()函数中,使用Season类型的变量currentSeason来存储当前季节,然后通过比较它的值来判断是否为夏季。

使用枚举常量的好处是可以提高代码的可读性和易维护性。通过使用具有描述性的枚举常量来代替直接的数值,在程序中更容易理解和识别特定的状态或选项。

猜你喜欢

转载自blog.csdn.net/cnds123/article/details/132127338