目录
1. 点运算符" . "只能用于类 类型的对象,左侧为一个类对象,右侧为该对象的一个成员名,运算结果为右侧运算对象指定的成员。
成员函数是定义为类的一部分的函数, = 方法
item.isbn()
2. std是标准库要用的命名空间,std::cout,要使用定义在命名空间std中的名字cout
标准库是类型和函数的集合,提供了支持IO操作的类型
3. 表达式中既有带符号类型又有无符号类型,算式取值为负的时候自动转化为unsigned。
e.g:unsigend u = 10 , u2 = 42 , u - u2 =429496264
4. (1) 十进制整型 (2)八进制整
int month = 9, day = 7;
int month = 09, day = 07;
5. 初始化不是赋值。
初始化:创建变量时赋予其一个初始值
----- 初始化不能在>>后进行,多个变量不能同时初始化
错误:double salary = wage = 9999.99;
赋值:把对象的当前值擦除,再用个新的替代
6. 下列对象的初值是什么?
任何函数体外的变量都被初始化为0;
global_str、local_str初值为空字符串;
global_int为0;local_int未初始化
std::string global_str;
int global_int;
int main()
{
int local_int;
std::string local_str;
}
引用+指针
7. 引用相当于 “ 起别名” ,与被引用的对象绑定,且只能引用对象,不能引用xx的引用
引用符 " & "
int &refVal = ival;
/* refVal指向ival */
8. (1) 取地址符 “ & ” ,解引用符“ * ”
(2) void* 可以存放任意对象的地址
赋值永远改变的是等号左侧的对象
int i = 42;
int *pi = 0;
pi = &ival; /pi的值被改变,即地址发生了改变
*pi = 0; /pi指的元素的值发生了改变
9. (1)int* p; 与 int *p; 相同
(2)指针的指针: **表示指向指针的指针
(3)空指针的初始化:nullptr、0、具体的地址;
(4)引用不是对象,所以没有指向引用的指针;但由对指针的引用
int ival = 1024;
int *p = &ival;
int **p2 = &p;
int *pN = nullptr;
const限定
10. const类型的对象可以除了改变其值的所有操作,例如:为others赋值、bool
const起作用的范围在一个文件之内,想要在所有文件中使用同一个const对象,不想要每个文件都重新生成变量的话,就使用
1号文件
extern const int bufSize = fcn();
2号文件
extern const int bufSize;
11.
(1)对常量的引用 = 常量引用,不允许直接赋值(修改值),引用不是个对象
但是可以简洁修改引用的 非const 对象
int ci = 1024;
const int &r1 = ci;
错!! r1 = 42;
(2)有一个const值,不能直接用一个普通指针,必须得用指向常量的指针 ≠ 常量指针
const double pi = 3.14;
错! double *ptr = π
对! const double *cptr = π
错! *cptr = 42;
(3)const 指针 必须初始化,因为不能变
指针本身是常量,不能变,指向的对象可以变
int errNumb = 0;
常量指针! int *const curErr = &errNumb;
是个const就一定要初始化,指针可以不初始化
认定一个常量表达式,就声明称constexpr类型
错!const int *const p3;
对!指向常量的指针可以不初始化
const int *p;
(4) 指针和constexpr
在constexpr声明中如果定义了一个指针,限定符constexpr仅对指针有效,与指针所指的对象无关。对象可以是普通对象,也可以是const对象
类型别名
11. 定义类型别名的两种方式:
- typedef:
typedef char *pstring; pstring cstr = 0;
typedef不能简单地进行替换,e.g:
一个指向char的指针
typedef char *pstring;
cstr是一个指向char的常量指针
const pstring cstr = 0;
≠
指向char常量的指针
const char *cstr = 0;
- 别名声明:
using SI = Sales_item; SI item;
12. 头文件通常只包含那些只能被定义一次的实体,e.g:类、const、constexpr
头文件一旦改变,相关源文件有Sales_data.h都需要重新编译以获取更新过的数据
预处理器:在编译之前执行的一段程序,e.g:#include
13. 引用从来都是作为所指对象的同义词出现,只有在decltype处是个意外
const int ci = 0, &cj = ci;
|即cj是一个常量引用
|所以z是个引用,必须初始化
|错!
decltype(cj) z;
14. 类以struct开始,紧跟类名和类体,类体之中用" { } "包围形成用一个新的作用域,表示结束的花括号" } "必须写一个分号" ; "