《C++ Primer》 第02章 [ 变量和基本类型 ]

第02章:变量和基本类型
第三节:变量
@ 学习摘录007:
——C++是一门静态类型语言,在编译的时候会作类型检查.
@ 学习摘录008:
——左值:lvalue,左值可以出现在赋值语句的左边或右边。
——右值:rvalue,右值只能出现在赋值的右边,不能出现在赋值语句的左边。
——变量是左值,因此可以出现在赋值语句的左边,数字字面是右值,因此不能被赋值。
摘录有想008:
——在我理解中,因为变量可在左也可在右,因此它为左值,而数字则只能出现在右边,因此它为右值。
@ 学习摘录009:
——变量提供了可以操作的有名字的存储区,对象就是内存中具有类型的区域。
摘录有想009:
——例如:int a; class b{}; b c; 这里,a 和c属于对象。
@ 学习摘录010:
——初始化变量不是赋值。
——初始化:指创建变量并给它赋初始值。
——赋值:是擦除对象的当前值并用新值代替。
@ 学习摘录011:
——初始化变量有两种形式。
——1. int ival(1024);  // direct-initialization  直接初始化
——2.int ival = 1024;  // copy-initialization  复制初始化
@ 学习摘录012:
——复制初始化和直接初始化之间的差别是很微妙的。
——现在我们只需知道,直接初始化的效率更高。
@ 学习摘录013:
——未初始化变量引起的错误难以发现,永远不要依赖未定义行为,使用未初始化的变量是常见的程序错误。虽然许多编译器都至少会提醒不要使用未初始化变量,但是编译器并未被要求去检测未初始化变量的使用。而且,没有一个编译器能检测出所有未初始化变量的使用。
收大收获014:
——extern声明不是定义,也不分配存储空间。
——事实上,它只是说明变量定义在程序的其他地方。
摘录有想014:
——extern的使用得注意,一个文件里面放定义,另外一个文件里面放声明才可以,上次同学就是犯了这样的错误,没有在另一个文件中声明就想用extern变量了。
@ 学习摘录015:
——只有当声明也是定义时,声明才可以有初始化式,因此只有定义才分配存储空间。
@ 学习摘录015:
——看来下次写程序时真的要直接在声明的时候就定义好,那样的话就安全多了。
@ 学习摘录016:
——作用域可以分为三种:
——1.全局作用域(global scope)
——2.局部作用域(local scope)
——3.语句作用域(statement scope)
摘录有想016:
——有语句 for(int val = 1; val <= 10; ++val) sum += val;
——此处,val 定义在for语句的作用域中,只能在for语句中使用,而不能在main 函数的其他地方。
第五节:引用
@ 学习摘录018:
——“const引用”的意思是“指向const 对象的引用”。
@ 学习摘录019:
——非const引用只能绑定到与该引用同类型的对象。
——const引用则可以绑定到不同但相关的类型对象或绑定到右值。
第八节:类类型
@ 学习摘录020:
——每类都定义了一个接口(interfer)和一个实现。
——接口由使用该类的代码需要执行的操作实组成。
——实现一般包括该类所需要的数据。
——类体定义了组成该类型的数据和操作。操作称为成员函数,数据则称为数据成员。
@ 学习摘录021:
——用class和sturct关键定义类的唯一差别在于默认访问级别:默认情况下,struct的成员为pulbic,而class的成员为private.
@ 学习摘录022:
——当我们在头文件中定义了const变量后,每个包含该头文件的源文件都有了自己的const 变量,其名称和值一样。
@ 学习摘录023:
——避免多重包含,为了避免多重包含,避免名字冲突,预处理器变量经常用全大写字母表示。
#ifndef ABC_H
#define ABC_H // Definition of ABC class and related functions goes here
#endif
摘录有想023:
——看了这么多书,这么多个例子,终于知道为什么它总是用大写来表示了。
原文地址:https://www.cnblogs.com/robbychan/p/3787187.html