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变量。 2.4.1 const的引用 引用类型必须与所引用对象类型一致。 常量指针: int *const pt = &a; 指针为常量不可改变。 指针常量: int const *pt = &a; a为常量不可改变。 若a ...
分类:
其他好文 时间:
2018-04-05 21:00:12
阅读次数:
134
记住从右往左读,左边的修饰右边的。 在*之前表示const修饰数据,是底层const,数据不可以修改; 在*之后表示const修饰这个指针,是顶层const,指针的指向不可以修改。 1、const成员函数 两个成员函数如果只是常量性不同,可以被重载。(函数名相同,内容不一样) 在类里面,把一个成员函 ...
分类:
其他好文 时间:
2017-12-10 21:25:28
阅读次数:
153
C++的四种强制类型转换为:static_cast、const_cast、reinterpret_cast和dynamic_cast类型转换的一般形式:cast-name(expression);static_cast任何具有明确定义的类型转换,只要不包含底层const,都可以使用static_ca... ...
分类:
编程语言 时间:
2017-09-04 13:14:22
阅读次数:
227
顶层const是代表对象本身是一个常量(不可改变); 底层const是代表指向的对象是一个常量(指向的不可改变); 当执行对象的拷贝操作时,常量时顶层const还是底层const时就区别明显,其中顶层const不受什么影响; 底层const执行拷贝是2对象的类型必须一样,或者可转换,一般非常量可以转 ...
分类:
编程语言 时间:
2016-11-11 12:16:22
阅读次数:
177
inti=10;
constint*p1=&i;//这里是底层的const,能改变p1,但是不能改变*p1
//*p1=200错误
p1=&i//正确
int*constp2=&i;//顶层const,能改变*p2,但不能改变p2
*p2=200;
p2=&i//错误
分类:
其他好文 时间:
2016-10-29 16:46:20
阅读次数:
164
1. 关于C++中的const int** foo的含义 reference : stackoverfolw。 2. C++中的底层const与顶层const 使得被修饰的变量本身无法改变的const是顶层const,其他的通过指针或引用等间接途径来限制目标内容不可变的const是底层const。 ...
分类:
其他好文 时间:
2016-09-13 23:53:38
阅读次数:
151
重点: 1.重载函数:同一作用域内的几个函数名字相同但形参列表不同。 NOTE: main函数不能重载。 2.两个函数如果只有返回类型不同,是不可以的。 3.Typedef A B :B是A的别名。 4.顶层const没有区分:&const , *const 底层const 可区分:const& , ...
分类:
其他好文 时间:
2016-08-19 00:40:27
阅读次数:
182
auto 1.编译器通过分析表达式的类型来确定变量的类型,所以auto定义的变量必须有初始值。 2.auto可以在一条语句中声明多个变量,但该语句中所有变量的初始值类型必须有一样。 3.auto会忽略掉顶层const,同时底层const则会保留下来 如果希望auto类型是一个顶层const ,需要明 ...
分类:
其他好文 时间:
2016-06-02 13:28:26
阅读次数:
171