栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++primer const部分笔记

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++primer const部分笔记

1.const对象必须初始化。初始值可以是任意复杂的表达式
     const int k = geisize();
	 const int i = 98;
2.利用一个对象去初始化另一个对象,与是否是const类型无关
	int i = 42;
	const int ci = i;
	int j = ci;
3.默认const对像仅在文件内有效(在一个文件中定义,其他文件使用)
	//file1.cc定义且初始化
	extern const int bufsize = fcn();
	//file1.h头文件
	extern const int bufsize ;
4.对常量的引用
	1.
		const int i = 99;
		const int &p = i;//引用及其对象都是常量
		int &q = i  //错误
		常量引用只能绑住常量(引用的类型必须和它所引用对象一致)
	2.例外1:初始化常量引用只要表达式的结果能转换成引用的类型
		int i = 43;
		const int &r1 = i;
		const int &r2 =43;
		const int &r1 = r1 * 2;
        C++创建了一个临时变量,例如:double dal = 3.14; 
 							         const int temp = dal;
                                     const int &r1 = temp;
        但是不能int &r2 = dal;因为把r2绑定到临时变量上没有意义)
    3.可以对常量引用的值进行修改
                int i = 42;
				int &r1 = i;
				const int &r2 = i;
				r1 = 0;
5.指向常量的指针
指针的类型必须与其所指的对象的类型一致
例外1:
	指向常量的指针可以指向一个非常量:
		 double dal = 3.12;
		 const double *p =&dal;
6.常量指针(指针所本身不允许变,指针所指向的值可变)
	int item = 0, item1 = 9;
	int *const cur = item;
	*cur = 99;//正确的
	cur = item1//不正确
7.顶层const
	顶层const:指针本身是常量
	底层const:指针所指对象是常量
8.常量表达式:值不变,且编译过程就可以得到结果的表达式
	1.constexpr变量一定是常量,且必须用常量初始化
		constexpr int mf = 20;
		constexpr int limit = mf + 1;
		constexpr int sz = size();//只要size()是一个constexpr函数才是正确的
	2.字面值:constexpr指针初始化必须是nulllptr或者0,或者存储在某个固定地址中的对象
		限定符constexpr仅对指针有效,与指针对象无关(constexpr把它的对象置为顶层的const)
			const int *p = nullptr;     //p是一个指向常量的指针
			constexpr int *q = nullptr;//q是一个常量指针
	3.指针与const:定义在函数体外的对象的地址固定不变,可以用来初始化constexpr指针(有固定地址的变量可以初始化constexpr指针)
			函数体外:int j = 0;
					  contexpr int i = 42;
			函数体内:		  
			          constexpr const int *p = &i;
					  constexpr int *p1 = &j;
					  
					  static int y = 0;
					  constexpr const int* m = &y;//有固定地址的变量可以初始化constexpr指针

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/835510.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号