因只有对象创建时,才会分配空间,类中非静态数据成员不能够在类内直接初始化或赋值,C++提供了构造函数对类的数据成员进行初始化,或者是赋值
数据成员的初始化(函数重载)
普通构造函数:两个或以上参数的构造函数
默认构造函数:没有参数或者所有的函数都有默认参数,一个类中只能有一个默认构造函数
复制(拷贝)构造函数:在创建对象时,使用同一类中之前创建对象来初始化新创建的对象。
默认:浅复制
类型转换构造函数: explicit关键字避免以下情况
当构造函数有一个参数时,会转换成自身类型的参数
释放对象在生存期间动态申请的空间
析构函数不能被重载
类的普通对象可以走构造和析构函数。先自动调用构造函数,然后运行自己写的函数,最后回收前调用析构函数。(因为对象是局部变量,函数结束时就会被回收,析构函数回收前会被调用)
创建普通对象或者new对象都会走构造函数,普通对象被回收会走析构,new出来的对象delete时也会走析构函数
继承关系中的派生类创建对象:构造的执行顺序先走基类的构造,再走派生类的构造,
继承关系中的派生类释放对象:先走派生类的析构,再走基类的析构