C++primer学习笔记(四)

C++primer学习笔记(四)

第六章 语句

1.复合语句,通常被称为块,是用一对花括号括起来的语句序列(也可能是空的);块的结束不是以分号结束;
2.
3.IO类型可以用作条件,但vector类型和string类型一般不可用作条件;
4.将else匹配给最后出现的尚未匹配的if子句来解决悬垂else问题带来的二义性;
5.每个case标号的值都必须是一个常量表达式
6.在循环条件中定义的变量在每次循环里都要经历创建和撤销的过程;
7.在for语句头定义的任何对象只限制在for循环体里可见;
8.可以在for语句的初始化语句中定义多个对象,但是不管怎么样,该处只能出现一个语句,因此所有的对象必须具有相同的一般类型;
Do-while至少执行一次,循环到不满足条件时推出,而且该语句块是以分号结束。
9.break只能出现在循环或switch结构中,或者出现在嵌套于循环或switch结构中的语句里;
10.continue语句导致最近的循环语句的单次迭代提前结束,对于while和do while语句,继续求解循环条件,而对于for循环,程序流程接着求解for语句头中的expression表达式;
11.goto语句和获得所转移的控制权的带标号的语句必须位于同一个函数内;
12.goto语句不能跨越变量定义语句向前跳转;
13.异常,throw和try…Catch…

在这里插入图片描述

第七章 函数

1.在函数体类定义的变量只有在该函数中才可以访问,这种变量称为局部变量;
2.实参必须具有与形参类型相同、或者能隐式转换为形参类型的数据类型;
3.在定义或声明函数时,没有显式指定返回类型是不合法的;
4.如果两个参数具有相同的类型,则其类型必须重复声明;
5.参数表中不能出现同名的参数,局部于函数的变量也不能使用与函数任意参数相同的名字;
6.每次调用函数时,都会重新创建该函数所有的形参,此时所传递的实参将会初始化对应的形参;
7.普通的非引用类型的参数通过复制对应的实参实现初始化;
引用形参的使用可以使得函数返回多个所需值
8.如果使用引用实参的唯一目的是避免复制实参,则应将形参定义为const引用;
9.非const引用形参只能与完全同类型的非const对象关联;
对vector进行传参操作时,通常传递迭代器itreator;对数组进行传参操作时,通常传递数组名,也就是数组的指针;
10.当编译器检查数组形参关联的实参时,它只会检查实参是不是指针、指针的类型和数组元素的类型是否匹配,而不会检查数组的长度;
11.在无法列举出传递给函数的所有实参的类型和数目时,可以使用省略符形参。省略符暂停了类型检查机制。它们的出现告知编译器,但调用函数时,可以有0或多个实参,而实参的类型未知;
12.允许主函数main没有返回值就可结束。如果程序控制执行到主函数main的最后一个语句后都还没有返回,那么编译器会隐式地插入返回0的语句;
13.千万不能返回局部变量的引用;
14.千万不要返回指向局部对象的指针;
15.定义函数的源文件应包含声明该函数的头文件;
16.如果有一个形参拥有默认实参,那么,它后面所有的形参都必须有默认实参;
即带有默认实参的函数,其默认实参放在函数声明定义的参数列表的最后。
多个默认实参时候,默认按照声明的顺序进行赋值替换,对处于后面的默认实参进行修改时,有必要将前面的默认实参也重新赋值。
17.既可以在函数声明也可以在函数定义中指定默认实参。但是,在一个文件中,只能为一个形参指定默认实参一次;通常应在函数声明中指定默认实参,并将该声明放在合适的头文件中。如果在函数的定义的形参表中提供默认实参,那么只有在包含该函数定义的源文件中调用该函数时,默认实参才有效。
18.内联函数应该在头文件中定义;内联函数消除了普通函数的调用额外开销;inline对于编译器只是个建议,编译器根据函数来选择优化;
19.在头文件中加入或修改内联函数时,使用了该头文件的所有源文件都必须重新编译;
20.类的成员函数都必须在类定义中的花括号里面声明,此后,就不能再为类增加任何成员;
21.编译器隐式地将在类内定义的成员函数当作内联函数;
22.每个成员函数都有一个额外的、隐含的形参this(除了static成员函数以外)。在调用成员函数时,形参this初始化为调用函数的对象的地址;
23.在函数的形参表中包含this指针是非法的;
24.如果函数被声明为const成员函数,那么函数定义时形参表后面也必须有const;
25.构造函数和类同名,而且没有返回类型;
26.一个类可以有多个构造函数,每个构造函数必须有与其他构造函数不同数目或类型的形参;
27.如果没有为一个类显示定义任何构造函数,编译器将自动为这个类生成默认构造函数;
28.合成的默认构造函数不会自动初始化内置类型的成员;
29. main函数不能重载;
30.函数不能仅仅基于不同的返回类型而实现重载;取决于形参列表是否相同;
31.在C++中,名字查找发生在类型检查之前;
32.函数指针只能通过同类型的函数或函数指针或0值常量表达式进行初始化或赋值;
33.将函数指针初始化为0,表示该指针不指向任何函数;
34.函数的形参可以是指向函数的指针;
35.允许将形参定义为函数类型,但函数的返回类型则必须是指向函数的指针,而不能是函数。

猜你喜欢

转载自blog.csdn.net/qq_34935373/article/details/90547387