const
是C/C++中的关键字,用于声明一个不可修改的常量。它有以下特性:
宏是预处理指令,在编译前进行文本替换:
内存寿命指的是变量在内存中存在的时间周期,主要分为:
const优势:
宏定义优势:
// 宏定义
#define PI 3.14159
#define MAX(a,b) ((a) > (b) ? (a) : (b))
// const常量
const double pi = 3.14159;
const int bufferSize = 1024;
// 类中的const成员
class Circle {
public:
Circle(double r) : radius(r) {}
double area() const { return pi * radius * radius; } // const成员函数
private:
const double pi = 3.14159; // 类内const成员
double radius;
};
宏定义在预处理阶段就被替换,不占用运行时内存空间,但可能导致代码膨胀。
const int* ptr1; // 指向const int的指针
int* const ptr2; // const指针,指向int
const int* const ptr3; // const指针,指向const int
解决方案:从右向左阅读声明,const修饰它左边的内容。
#define SQUARE(x) x*x
int a = 5;
int result = SQUARE(a+1); // 展开为a+1*a+1,结果是11而非36
解决方案:使用内联函数替代函数式宏,或确保宏参数完全括号化:
#define SQUARE(x) ((x)*(x))
类内const成员必须在构造函数初始化列表中初始化:
class Test {
const int val;
public:
Test(int v) : val(v) {} // 正确初始化
// Test(int v) { val = v; } // 错误,不能在函数体内赋值
};
没有搜到相关的沙龙