C++_Primer_Notes
第2章 变量和基本类型
-
Ctrl + D
:输入文件结束符 -
unsigned u = -1
等价于u = 2^32 - 1 = 4294967295
-
访问超出
string
空间大小,编译器也不会报错 -
“对象”:一块能存储数据并具有某种类型的内存空间
-
初始化的赋值的区别:初始化的含义是创建变量时赋予其一个初始值,而赋值的含义是把对象的当前值擦出,而以一个新值来代替
-
变量能且只能被定义一次,但是可以被多次声明
-
引用必须被初始化,且只能绑定在对象上
-
为什么不能定义引用的引用?
引用本身并不是一个独立的对象,它没有自己的内存地址,它是轻量的, 根据引用的本质,当尝试将一个引用作为另一个引用的目标时,实际上是在为同一个对象创建另一个引用,而不是创建一个指向引用的引用。
-
为什么不能定义指向引用的指针?
因为引用不是对象,没有实际地址,所以不能定义指向引用的指针
-
int *p = nullptr
和int *p = 0
都是生成空指针 -
如果想在多个文件之间共享
const
对象,必须在变量的定义之前添加extern
关键字 -
非常量引用不能指向常量对象
-
const修饰指针:
简记:看
const
和*
的相对位置- 如果是
const *
指向可以变,指向的对象不能变 - 如果是
* const
指向的对象可以变,指向不能变
顶层const:指针是常量,不能变
底层const:指向的对象是常量,不能变
声明引用的const都是底层const,
当执行对象的拷贝操作是,拷入和拷出的对象必须具有相同的底层
- 如果是
-
auto关键字一般会忽略掉顶层const,保留底层const;
1
2
3
4
5
6
7
8
int i = 42;
decltype((i)) d; // 错误:d 是int&,必须初始化
decltype(i) e; // 正确:e是一个(未初始化的)int
// decltype((v))的结果永远是引用
int *p = &r;
decltype(r) d; // d是int&
decltype(*p) d; // d是int&
- 预处理器:确保文件多次包含仍能安全工作
第3章 字符串、向量和数组
-
字符串字面值与string是不同的类型
1
2string s1;
string s = "abc" + "def" + s1; // 是错误的 -
迭代器的有效:迭代器指向某个元素或者尾元素的下一位置
-
1
-
1
-
1
本帖子由zhr原创,搬运请注明来源
评论