c++中const用法

#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++
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭