工作原因,开始蒸腾C++,看书看不下去,只能用这种边看便吐槽的方式了。不过速度太慢了,不过至少能看下去了。
这一节是符合类型,引用和指针
引用
-
int &refValue2;
这个语句是错误,因为一旦引用初始化了,那么引用就无法再被绑定到其他对象上,所以引用必须初始化。 - 引用不是对象,所以不能定义引用的引用
- 引用不能用字面值或者常量表达式初始化,我觉得应该是字面值和常量初始化不是对象
指针
- 指针只能指向对象,而引用不是对象,所以不能定义指向引用的指针
- 如果指针指向一个对象,可以用
*
来解引用(书上称它为解引用符,但是很容易和引用混淆在一起) -
int *p1 = nullptr; int *p2 = 0; int *p3 = NULL;
总感觉C++做了很多的妥协,连定义一个空指针都有三种方式,结果定义出来的空指针还是不能访问的,那我定义它干啥?或许只是为了后来来判断该指针是否被赋值吧,那默认空指针不是更靠谱,好吧,函数内不会自动初始化。 -
if(p1 == p2)
指针可以用来表达式中,前提是指针是一个合法指针,否则就会发生不可预计的后果,一本书里,不可预计
出现了N次,所谓的不可预计
就是说连C++之父也不知道会出现什么,那干嘛要弄出这么恶心的东西出来呢。 -
void *
指针是一种特殊的指针,类似与iOS里面的id
类型,为什么说它特殊呢?因为你无法用*
直接取它的值,所以它是指针,又没法干指针该干的事。
修饰符
修饰符有*``&
,变量的定义包括基本数据类型和一组声明符,而声明符基本上就变量名,而修饰符也属于声明符,用来修饰变量名,修饰完就变成了另外一种类型,出来的类型就被称作复合类型(这名字本身就很歧义),也就是引用
,指针
。例如:int *p1
,int
是基本类型,*p1
是声明符。
指向指针的引用
int *p;int int *&r = p
因为指针是对象,所以定义指针的引用。但是还是少用这个比较好,已我的脑子,看这种代码早晚会疯掉。
部分文字来自《C++ Primer》
写于2015-01-07
网友评论