C++构造函数要点

1、作用:构造函数主要用来完成成员的初始化工作

2、写法:与类同名的函数,一般为公有,在单例的情况下可以定义为私有,构造函数可以带参数,也可以重载,但是没有返回类型,可以不手动提供构造函数。

3、继承:

(1)基类没有定义构造函数的情况:

派生类也可以不定义构造函数,全部采用默认的构造函数。

如果只有派生类定义构造函数,只需要构造派生类对象即可,对象的基类部分使用默认构造函数来自动创建。

(2)基类中存在构造函数:

基类中存在不带参数的构造函数。如果基类定义了构造函数,而且该构造函数没有参数,那么它可以隐式的被继承,也就是说,派生类根本不需要构造函数。

基类中存在带参数的构造函数。如果基类定义了带有参数的构造函数,则此构造函数必须被继承且在派生类中实现构造函数。同时提供一个将参数传递给基类构造函数的途径,以便在基类进行初始化时能获得必需的数据,在实现构造函数时使用base关键字。创建派生类的对象后,程序首先运行的是基类的构造函中的内容,然后才是派生类的内容。

4、拷贝构造函数:

拷贝构造函数是一种特殊的构造函数,函数的名称必须和类名称一致,它必须的一个参数是本类型的一个引用变量。拷贝构造函数是类本身就存在的一个构造函数。

浅拷贝深拷贝:默认的拷贝构造函数已经能够处理大部分问题,其原理就是对应的变量进行赋值,但是这就会存在一个问题,当变量中存在指针或者动态成员时,拷贝指针可能不是我们想要的结果,这就是浅拷贝。在“深拷贝”的情况下,对于对象中动态成员,就不能仅仅简单地赋值了,而应该重新动态分配空间。

原文地址:https://www.cnblogs.com/lishuai0214/p/4338334.html