#include "iostream"
int mValue = 29;
int getSize(){
return mValue;
}
int mCV = getSize();
constexpr int ce1 = 41;
int main(){
int i = 92;
const int &ri = i;
i = 13;
std::cout << ri << std::endl;
int v = 92.88f * 3;
std::cout << v << std::endl;
const double pi = 3.14;
const double *pp = π
double d1 = 3.14;
const double *pd1 = &d1; //*号放在const之后,表示指针指向的是个常量
//*pd1 = 83; //错误.指向常量的指针,认为常量不能通过该指针改变.
double *const pd2 = &d1; //*号放在const之前,表示指针本身是常量,但是所指向的地址不一定存放的常量
*pd2 = 72;//正确
std::cout << d1 << std::endl;
double nPi = 9292;
// *pp =82; //错误.pp自以为所指向的变量是无法改变的常量
pp = &nPi; //正确.pp只是以为所指向的变量是无法改变的常量,但是pp指针本身可以改变
std::cout << *pp << std::endl;
int iv = 28;
const int *const pv = &iv; // pv指针与 *pv都不能改变
const int *pvBottom = pv; //正确. pvBottom可以变,但是所指向的常量不能改变
//int *const pvTop = pv; //错误.引起误解,以为pvTop指针不可改变,但是*pvTop 可以重新赋值,这样引起冲突,导致错误.
std::cout << *pvBottom << std::endl;
std::cout << "mCV = " << mCV << std::endl;
constexpr const int *pce1 = &ce1; //其中mValue与cel必须写在函数外部,> 确保编译阶段就能识别. pce1是常量指针,指向整型常量iv
constexpr int *pce2 = &mValue; //其中mValue与cel必须写在函数外部,确保编译阶段就能识别.pce2是常量指针,指向整数iv (这个和int *const 指针类似,自己体会,不要和const int *指针弄混了)
return 0;
}
c++中const用法
最新推荐文章于 2020-12-04 11:22:19 发布