C++面向对象程序设计(用通俗易懂的方式理解它)

本文详细讲解了C++中的析构函数,涉及对象数组的构造与初始化、对象赋值与复制的过程,以及析构函数在对象生命周期结束时的重要作用,包括内存释放。

第三章 析构函数

第一节 对象数组

第二节 对象的赋值与复制

第三节 析构函数

第一节 对象数组

  1. 对象数组指的是每一个数组元素都是对象的一个数组。
/*<类名><数组名>[<对象的个数>];*/
Student stud[30];
/*定义了stud数组,其中包含30个元素*/

        注意:在建立数组时 ,需要调用构造函数。有几个构造函数就需要调用几次构造函数。

        可以在定义数组时对其提供实参以实现初始化。

  • 当构造函数只有一个参数时,在定义数组时可以在等号后面的花括号里提供实参。
    Student stud[2]={90,95};

    将两个实参分别传递给两个数组元素的构造函数。

  • 构造函数有多个参数时,在花括号中分别写出构造函数名并在括号内指定实参。
Student stud[3]={                    //定义对象数组
    student (100,小王),            //调用第一个元素的构造函数,并向它提供两个实参
    student (101,小红),            //调用第二个元素的构造函数,并向他提供两个实参
    student (102,小李),           //调用第三个元素的构造函数,并向他提供两个实参
}
  • 编译系统只为每个对象元素的构造函数传递一个实参,所以在其定义数组时提供的实参个数不能超过数组元素个数。

第二节 对象的赋值与复制

  1. 对象的赋值:当一个类定义了两个或多个对象时,这些同类的对象之间可以相互赋值,即一个对象的值可以赋给另一个同类的对象。
    对象名 1=对象名 2;
  • 代码举例:
#include<iostream>
using namespace std;
class Box
{
    public:
    Box(int l=10,int w=15,int h=20):length(l),width(w),height(h){}           //声明有默认参数的构造函数,用参数初始化对数据成员初始化
    int volume();
    private:
    int length;
    int width;
    int height;
    
};
int Box::volume()
{
    return(length*width*height);
}
int main()
{
    Box box1(10,11,12),box2;
    cout<<"The volume of box1 is "<<box1.volume()<<endl;
    box2=box1;
    cout<<"The volume of box2 is "<<box2.volume()<<endl;
    return 0;
}

        3.对象的复制 

        对象的复制就是用一个已有的对象快速地复制出多个完全相同的对象。

形式1:

类名 对象2(对象1);

形式2:

类名 对象名 1=对象名 2;

注意:对象的复制在建立对象时需要调用复制构造函数,它只有一个参数,这个参数只能是本类的对象,不可以是其他类的对象,而且采用对象的引用形式。复制构造函数的作用就是将实参对象的各成员值一一赋给新的对象中对应的成员。

Box::Box(const Box &b)
{
    height=b.height;
    width=b.width;
    length=b.length;
}

第三节 析构函数

  1. 析构函数也是类的成员函数,它的名字是在类名前加字符“~”。析构函数没有参数和返回值,并且不能被重载,所以一个类中只能定义一个析构函数并且应为public。
  2. 当一个类的对象运行失效时,就要调用该对象所属类的析构函数。
  3. 析构函数的作用是释放一个对象占用的内存。
  4. 用new运算符动态地创建一个对象,当用delete运算符释放它时,自动调用析构函数。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Train first

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值