侯捷C++ 面向对象高级开发笔记总结

1.

 

 定义头文件时,需要加上防卫式声明。

2.

 

 

相比于定义于构造函数内, 效率上会好一些。

3.

 

 

第一个构造函数有默认参数,可以不传入参数

当第二个函数定义时,会令编译器无法识别应该调用哪个函数,所以不允许出现这种情况。

4.

 

 

 当函数确认不改所在类的任何变量时,需要在函数末尾加上const修饰,否则当函数传入常量参数时,对其进行修改,则会发生错误。

 

5.

 

代码成立,解释:相同类的各个对象互为友元。

 6.

当类内函数有指针变量时,需要定义拷贝构造和拷贝赋值两个函数

拷贝构造、拷贝赋值和析构函数称为三个特殊函数。

7.

 

 当进行深拷贝时,首先需要进行自我检测赋值,防止delete掉本身的指针所指的内容。

然后三步走(1.清空需要赋值的指针,2.申请内存空间 3.赋值)

 8.

 

 

a) 派生类的构造函数首先调用基类的默认构造函数,然后再执行自己。

b)派生类的析构函数先执行自己,然后才调用基类的析构函数。

 

9.

 符合选中部分的情况,析构函数和构造函数的调用如下:

base 构造函数
Conponent 构造函数
Derived 构造函数
Derived 析构函数
Conponent 析构函数
base 析构函数

 

 

10.

 使用类型转换函数需要注意:

1. 类型转换函数必须是成员函数,不能指定其返回类型,并且形参必须为空,返回值是隐含的,返回值类型是和转换的类型Type是相同的,在本例子中为double。
2. Type表示内置类型名、类类型名或者是类型别名(typedef)。除了void外,任何可作为函数返回类型的类型都可以定义转换函数的目标转换类型。一般不允许转换为数组或函数类型,但是可以转换为指针类型以及引用类型
3. 类型转换函数一般不应该改变被转换的对象,因此转换函数通常属性被定义为const。

11.

 

 

 参数使用reference时,并不能实现重载。但使用const修饰时,可以重载并存。

posted @ 2022-06-21 09:42  SpriteZzz  阅读(97)  评论(0)    收藏  举报