C++primer学习笔记 第7章

1.形参的初始化与变量的初始化一样:如果形参具有非引用类型,则复制实参的值,如果形参为引用类型,则它只是实参的别名。

2.c中习惯用传递指针来实现对实参的访问。C++中,使用引用形参更安全。

3.如果使用引用形参唯一的目的是避免复制形参,则应将形参定义为const引用。

4.非const引用形参 只能与完全同类型的非const对象关联。因此,应该将不修改相应实参的形参定义为const引用。如果定义为非const,则毫无必要的限制了该函数的使用。

5.交换数值:1).定义*v1*v2,使用是swap(&v1,&v2);2).定义是&v1&v2,使用是swap(i,j)  (修改i和j);3).定义是*&v1*&v2,使用是swap(pi,pj)  (修改指针指向)。

6.vector形参为引用类型,通过传递 指向容器中 需要处理元素的 迭代器 来传递容器。

7.数组形参:数组以普通的非引用类型传递。函数操纵的是指针的副本,不会修改实参指针的值。但函数可通过该指针修改数组元素的值。

8.数组的大小: int j[ ];大小为sizeof(j)/sizeof(*j)。

9.int main(int argc,char*argv[ ])

10.void函数可以返回另一个类型同样是void的函数的调用结果。

11.EXIT_FAILURE、EXIT_SUCCESS :返回值的预处理变量: 在cstdlib头文件中。

12.不能返回局部对象的引用!(提示:返回引用安全的方法:自问 这个引用指向哪个在此之前存在的对象?)

      不要返回指向局部对象的指针!

13.如果一个形参有默认实参,那么后面所有的形参都必须有默认实参。最可能使用默认实参的形参排在最后。

14.在一个文件中,只能为一个形参指定默认实参一次。并且只有在包含该函数定义的源文件中调用该函数时,默认实参才有效。

15.static对象一旦被创建,在程序结束前都不会被撤销。

16.将形参定义为引用类型:1).需要修改实参的值。2).通过一次调用获得多个结果值。3).传递大型对象或 无法复制类类型做形参(复制构造函数为private时)->但此时的唯一目的是为了避免复制,应将形参定义为const引用。

17.指针形参和 引用形参的用法:当函数需要处理数组且 函数体不依赖于数组的长度时 使用指针形参。

18.内联函数适用于优化小的、只有几行且经常被调用的函数。内联函数应在头文件中定义,且如若有修改,使用了该头文件的所有源文件都必须重新编译。

19.编辑器隐式地将在类内定义的成员函数当作内联函数。

20.类的成员函数可以访问该类的private成员。

21.每个成员函数都有一个额外的、隐含的形参将该成员函数与调用该函数的类对象捆绑在一起。

22.形参this初始化为调用函数的对象的地址。

23.跟在成员函数形参表后面的const 改变了隐含的this形参的类型。用这种方式使用const的函数成为 常量成员函数。

24.const对象、指向const对象的指针或引用 只能用于调用其const 成员函数。

25.构造函数 是特殊的成员函数, 与类 同名,而且没有返回类型。构造函数 通常应确保其每个 数据成员 都完成了初始化式。

26.编译器创建: 合成的默认构造函数:对于类类型 的成员,会调用该成员所属类自身的默认构造函数实现初始化。 若对象在全局作用域中定义(即不在任何函数中) 或定义为静态局部对象,则这些成员将被初始化为0。

27.合成的默认构造函数 一般适用于仅包含类类型成员的类。而对于含有内置类型或复合类型成员的类,通常应该定义他们自己的默认构造函数初始化这些成员。

28.形参与const形参的等价性仅适用于非引用形参。有const引用形参的函数 与有非const引用形参的函数是不同的。类似,指针形参 亦不同。

29.C++中,名字查找发生在类型检查之前。

30.重载 与 作用域:不同作用域,局部屏蔽全局;相同作用域,均为重载,所有调用以不同方式解释。

31.实参转换等级降序排列:精确匹配、通过类型提升、通过标准转换、通过类类型转换。

     1). 较小的整数提升为int型。2).char到double优先级比char到 unsigned char 高。

32.枚举类型对象只能用同一枚举类型的另一对象 或一个枚举成员 进行初始化。

      无法将整型值传递给枚举类型的形参;可以将 枚举值传递给整型形参,此时 枚举值被提升为int型或更大的整型。

33.仅当形参是引用或 指针时,形参是否为const才有影响(为重载)。

34.不能基于指针本身 是否为const 来实现函数的重载。 f(int *); f(int * const)->(为redeclaration)。此时,const用于修饰指针本身,而不是修饰指针所指向的类型。

35.在引用函数名但又没有调用该函数时,函数名被自动解释为指向函数的指针。

36.直接引用函数名等效于 在函数名上应用取地址操作符。

37.如果指向函数的指针没有初始化,或者具有0值,则该指针不能在函数调用中使用。

38.具有函数类型的形参所对应的实参将被自动转换为指向相应函数类型的指针。但当返回的是函数时,转换操作无法实现。

39.指向重载函数指针 的类型 必须与重载函数的 一个版本精确匹配。

40.临时对象 一直存在直到最大表达式 结束为止,最大表达式 指的是包含创建该临时对象的 表达式 的最大范围内 的表达式。

41.不能仅仅基于不同的返回类型而实现函数重载。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值