构造函数相关

虚析构函数的作用
当基类的析构函数被声明为虚函数时,这确保了通过基类指针删除派生类对象时,能够正确地调用派生类的析构函数,然后才是基类的析构函数。这是多态行为的一部分,确保资源被适当地释放。

 析构函数的调用顺序
1. 如果基类析构函数是虚的:
   - 当使用 `delete` 删除指向派生类对象的基类指针时,首先会调用派生类的析构函数,然后调用基类的析构函数。这样可以确保派生类中的资源先被释放,然后是基类中的资源。

2. 如果基类析构函数不是虚的
   - 则在删除指向派生类对象的基类指针时,只会调用基类的析构函数,而不会调用派生类的析构函数。这可能导致派生类中分配的资源没有被释放,从而造成内存泄漏。

补充:函数重载,函数重写和函数隐藏:

函数重载:同一个类或作用域内的函数名称相同,但参数不同:在同一个类或者作用域中,允许有多个重名函数的存在,但是它们的参数不一样,编译时多态(编译器根据调用时提供的参数来决定使用哪个函数)

函数重写:派生类中对基类虚函数的重新定义,用于实现多态。发生在继承中,子类可以重新定义基类的虚函数,派生类的函数覆盖了基类的虚函数(重写的函数必须具有与基类虚函数相同的名称、参数列表和返回类型)

函数隐藏:是派生类中定义了一个与基类函数同名但参数不同的函数,导致基类的函数在派生类中不可访问。子类的函数与基类的虚函数名称一致,但是参数列表不匹配,故子类的函数不会重写基类的虚函数,而是隐藏了它。


拷贝构造函数:拷贝构造函数是C++中一个特殊的成员函数,用于创建一个对象作为另一个已经存在的对象的副本。当你需要通过一个已存在的对象来初始化一个新对象时,拷贝构造函数就会被调用。它主要用于实现对象的深拷贝或浅拷贝。通常进行深拷贝,赋值所有的成员变量,包括动态分配的内存

移动构造函数:C++11引入的特性,用于在不进行拷贝的情况下,将资源从一个对象转移到另一个对象。它通过转移资源的所有权来提高效率。

C++什么时候生成默认拷贝构造函数?

编译器编译的时候生成,包括:

1. 类的成员变量也是一个类,该成员类有默认的拷贝构造函数 例如:

class A{
private:
    B b;    //类B有默认拷贝构造函数, 
};

2. 类继承自一个基类,该基类有默认的拷贝构造函数

3. 为了实现多态,类成员中有一个或多个虚函数。

4. 类继承自基类,基类中有虚函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值