C++ 第二周笔记
本周的内容比较多,主要介绍了三个重要函数: 拷贝构造、拷贝赋值、析构函数。
1.拷贝构造函数。拷贝构造函数用于将一个对象复制到新创建的对象中。也就是说它用于初始化过程中,而不是常规的赋值过程中。拷贝构造函数的语法使用如下所示:
2.拷贝赋值函数。将一个对象的值赋值给另一个对象需要在类中添加拷贝赋值函数。如果对象中不含有指针,可以不自己定义拷贝赋值函数,因为编译器将调用自行定义的拷贝赋值函数,但当对象中含有指针的时候,需要自己添加拷贝赋值函数。这里涉及到深拷贝和浅拷贝的概念,在这里就不细说了。拷贝构造和拷贝赋值类似。拷贝赋值的语法如下:
3. 析构函数。析构函数的语法如下:
4.拷贝构造、拷贝赋值、与初始化列联表的一点思考。在第一周的时候,侯老师介绍了初始化列联表的概念,那时候还不是很理解为什么使用初始化列联表能够提高效率。学完这周的内容,突然明白。因为使用初始化列联表只进行了一个拷贝构造的动作,而使用普通的构造函数,要先构造一个对象,然后再进行拷贝赋值,所以使用初始化列联表能够大大提高效率。
5.New 和delete .对于new和delete ,我学的有点乱,这部分的笔记等以后学透彻之后再补。
7.除了以上的概念,本周主要还是还介绍了类与类之间的联系。 主要有继承、复合和委托。
(1)复合和委托。其实复合和委托在概念上很像,都是 一个对象带有另一个对象,不过复合是完全的包含另一个对象,而委托是包含指向另一个对象的指针,正如侯老师所说,其实委托就是composition by reference
(2)继承就是一个类派生出另一个类。继承中一个重要的概念就是虚函数,虚函数分为三种,一种是纯虚函数,一种还普通的虚函数还有一种是非虚函数,分别对应子类必须重写父类的函数、子类可能重写父类的函数、子类没必要重写父类的函数。
(3)最后一个概念就是这些关系下构造函数和析构函数是怎么使用的,其实很简单,对于构造函数而已,是由内到外的,对于析构函数而言是由外到类的,适用与以上所有讲的类和类之间的关系