在C++类内定义常量常用方式static const ,enum, 或const等形式。
static const :
在头文件中CTest类内声明如下:
static const int SIZE = 10; // 类内声明,同时初始化,仅适用于整型变量,ints/chars/bools等,
//要想对变量进行取地址,必须在实 现文件中再次声明,
对于非整型变量如double型变量:
static const double pi; // 非整型变量,只能声明,不能设定初始值,在定义文件中初始化const double CTest:: pi = 3.14;
static:
对于类内static变量,仅能在头文件中声明,在实现文件中初始化。
static int SIZE1; // 仅声明,不能初始化
static double pi1;
const :
对于const变量,在类内声明必须初始化。
const int SIZE2 = 9; // const类型,声明时必须设定初始值
const double pii = 2.6; // const类型,声明时必须设定初始值
enum:
enum {SIZE3 = 10}; // 类内使用枚举定义常量,不能对变量取地址
CTest.h文件
class CTest
{
public:
CTest() {};
void displayConstant();
static const int SIZE = 10; // 类内声明,同时初始化,仅适用于整型变量,ints/chars/bools等,
// 要想对变量进行取地址,必须在实现文件中再次声明;
static int SIZE1; // 仅声明,不能初始化,
const int SIZE2 = 9; // const类型,声明时必须设定初始值
static const double pi; // 非整型变量,只能声明,不能设定初始值,在定义文件中设定初值
static double pi1;
const double pii = 2.6; // const类型,声明时必须设定初始值
enum {SIZE3 = 10}; // 类内使用枚举定义常量,不能对变量取地址
int arr[SIZE3];
};
CTest.cpp文件
const int CTest::SIZE;
int CTest::SIZE1 = 6;
const double CTest::pi = 3.14;
double CTest::pi1 = 3.0;
void CTest::displayConstant()
{
std::cout << "static const int SIZE:" << SIZE << std::endl;
std::cout << "static int SIZE1:" << SIZE1 << std::endl;
std::cout << "const int SIZE2:" << SIZE2 << std::endl;
std::cout << "const double pi:" << pi << std::endl;
}