/***auto 会去掉顶层const 和 & 而decltype 不会***/ //什么是顶层? const int x=0, *ptr = x; auto i = ptr; //i is int * decltype(i) is const int * int i = 42, *p = &i, ... ...
分类:
其他好文 时间:
2019-05-18 15:53:29
阅读次数:
119
顶层const 表示指针本身是个常量 底层const 表示指针所指的对象是一个常量 1 int i=0; 2 int *const p1=&i; //不能改变p1的值,这是一个额顶层const 3 const int ci=42; //不能改变ci的值,这是一个顶层const 4 const int ...
分类:
编程语言 时间:
2019-04-13 23:21:51
阅读次数:
188
常量指针为顶层const,即把 * 放在 const 关键字之前。 例如: int a=0; int *const pa=&a; //pa为常量指针 一直指向a 指针指向的是一个常量为底层const,* 放在const之后。 例如: const int b=0; const int *pb=&b; ...
分类:
编程语言 时间:
2019-02-26 19:21:14
阅读次数:
155
总结: 指向常量的指针(底层const):不能通过解引用符来改变它所指向的内容 不代表它所指向的内容一定是常量 指针常量(顶层const):代表指针本身是常量,声明时必须初始化,之后它存储的地址值就不能再改变 常量的底层const不能赋值给非常量的底层const,拷贝时,拷入与拷出的对象必须具有相同 ...
分类:
其他好文 时间:
2018-09-12 23:01:53
阅读次数:
186
用实参初始化形参时会忽略掉顶层const。 尽量使用常量引用,普通引用会限制所能接受的实参类型,也会给调用者误导。 管理数组实参的3种方法: 数组本身包含一个结束标记 传递指向数组首尾元素的指针 定义一个表示数组大小的形参 可变形参的函数 如果实参类型相同,可用initializer_list模板类 ...
分类:
编程语言 时间:
2018-09-03 02:36:14
阅读次数:
164
c++ primer 中讲的 顶层const 和 底层 const 以前没搞懂的顶层const和底层const,这次看了后感觉明白了。 首先,const是一个限定符,被它修饰的变量的值不能改变。 对于一般的变量来说,其实没有顶层const和底层const的区别, 而只有向指针这类复合类型的基本变量, ...
分类:
编程语言 时间:
2018-06-04 00:56:21
阅读次数:
260
一、函数重载 普通函数重载的关键是参数列表 也称函数特征标。函数参数中有以下情况可以出现重载: 1、 形参个数不同 2、 形参的类型不同 3、 形参的类型和个数都不同 const形参和函数重载 重载无法区分const和非const 首先分清楚什么是顶层const,什么是底层const 前提是有一个指 ...
分类:
编程语言 时间:
2018-05-13 20:24:45
阅读次数:
250
记住从右往左读,左边的修饰右边的。 在*之前表示const修饰数据,是底层const,数据不可以修改; 在*之后表示const修饰这个指针,是顶层const,指针的指向不可以修改。 1、const成员函数 两个成员函数如果只是常量性不同,可以被重载。(函数名相同,内容不一样) 在类里面,把一个成员函 ...
分类:
其他好文 时间:
2017-12-10 21:25:28
阅读次数:
153
练习6.52 a)类型提升; b)算术类型转换。 练习6.53 a)如果实参是常量引用,则调用下面的函数 b)如果实参是指向常量的指针,则调用下面的函数 c)不合法,因为在char*后面加上const指的是该指针是个常量,这是一个顶层const,一个拥有顶层const的形参无法和另一个没有顶层con ...
分类:
编程语言 时间:
2017-08-04 14:28:58
阅读次数:
174
1.函数内的局部静态对象在程序的执行路径第一次经过对象定义语句的时候初始化,并且直到程序终止才被销毁,在此期间即使对象所在的函数结束执行也不会对它有影响。 2.当实参初始化形参的时候会忽略顶层const,换句话说,当形参有顶层const时,传给它常量或者非常量都是可以的。 3.数组在做形参的时候是不 ...
分类:
编程语言 时间:
2017-07-23 18:04:02
阅读次数:
225