C++常量
常量的定义
在C++中,定义常量可以使用const或constexpr。
<!–hexoPostRenderEscape:
const char c = 'A'; // 常量必须在定义时进行初始化
int i, j = 10;
const int k = i + j + 5; // 表达式可以用来初始化常量
/ constexpr与const基本类似,
但constexpr常量必须在编译时就被初始化,
而const常量可以延迟到运行时被初始化
/
const int n = f();
constexpr int num = f(); // error,编译时不知道f()的返回值
constexpr int t = j + 10; // error,j是变量,编译时还不知道j的值
int f() {
return 10;
}
:hexoPostRenderEscape–>
const与指针
/* 指针实际上可以看作是两部分,对象的地址和所指向对象的值 */
/*
=> 底层const:
const type *p1; // *p1不可变(该内存处存储的变量不可变),p1可变
=> 顶层const:
type *const p2; // p2不可变(始终指向同一块内存),*p2可变
*/
#include <iostream>
using namespace std;
int main() {
char *const p0; // error,p0未初始化
char *const p1 = "dukang";
char const *p2;
const char *p3 = "dukang";
const char *const p4 = "dukang";
const char *const p5; // error,p5是常量,必须初始化
p1 = "wankang"; // error,p1是常量,不可变更
p2 = "wankang";
p3 = "wankang";
p4 = "wankang"; // error,p4是常量,不可变更
p1[0] = 'w';
p2[0] = 'w'; // error,*p2是常量
p3[0] = 'w'; // error,*p3是常量
p4[0] = 'w'; // error,*p4是常量
return 0;
}
const与引用
int i = 9;
int &rr = i;
const int &ri = i;
rr = 8;
ri = 7; // error,ri是常量,不允许通过它来修改i的值
`
int i = 2;
const double &ff = 10.0; // 常量引用可以用常量初始化
// 等价于 double temp = 10.0;const double &ff = temp
const int &ri = i + 10;
int &ii = 3; // error,非常量引用不能用常量初始化
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!