C++编程:类中常量与枚举常量的使用

需积分: 49 1.1k 下载量 20 浏览量 更新于2024-08-10 收藏 530KB PDF 举报
"类中的常量-电机与拖动基础(第三版),高清扫描版,带书签,林瑞光主编,浙江大学出版社" 在C++编程中,类中的常量是一个重要的概念,它涉及到如何在类的上下文中定义和使用常量。在标题提到的《电机与拖动基础》第三版中,作者林瑞光讨论了类中常量的使用和限制,以及如何通过枚举常量来实现全局常量。 首先,当我们希望在类内部定义一个只在该类中有效的常量时,通常会尝试使用`const`关键字修饰数据成员。然而,这样做并不意味着这个常量在整个类的生命周期内是不变的,因为每个类实例(对象)都可以有自己的`const`数据成员的副本,这些副本的值可以因对象的不同而不同。因此,`const`数据成员并不是真正意义上的全局常量。 描述中指出,`const`数据成员不能在类声明中初始化,例如: ```cpp class A { public: const int SIZE = 100; // 错误,企图在类声明中初始化 const 数据成员 int array[SIZE]; // 错误,未知的 SIZE }; ``` 上述代码是错误的,因为编译器在创建对象之前无法知道`SIZE`的具体值,且`array`的大小也因此无法确定。正确的做法是在类的构造函数初始化列表中初始化`const`数据成员: ```cpp class A { public: A(int size); const int SIZE; }; A::A(int size) : SIZE(size) { // ... } ``` 这样,每个`A`类的对象都可以拥有自己的`SIZE`值,例如`A a(100)`和`A b(200)`会有不同的`SIZE`值。 如果需要在整个类中都保持不变的常量,不应依赖`const`数据成员。此时,可以使用枚举常量(`enum`)来达到目的: ```cpp class A { public: enum { SIZE1 = 100, SIZE2 = 200 }; // 枚举常量 int array1[SIZE1]; }; ``` 枚举常量`SIZE1`和`SIZE2`是类级别的常量,它们在类的所有实例中都具有相同的值,不会因对象的不同而改变。 这段摘要内容出自林锐博士的《高质量C++/C编程指南》v1.0,书中详细讨论了C++编程的多个方面,包括文件结构、程序的版式、命名规则、表达式和基本语句、常量、函数设计以及内存管理等。这份指南旨在提供一套高质量的编程规范,帮助开发者写出更清晰、更易于维护的C++代码。