C++对象数组调用构造/析构函数的方法

C++的对象数组:
顾名思义,即是存储对象的数组。比如有一个对象student,实例化为对象数组有如下两种方式:

student stu[3];  //第一种方法,在栈空间中占用内存
student *stu = new student[3];//第二种方法,在堆空间中分配空间

对象数组调用构造函数:

class student   //定义一个student类,只有个构造函数当示例用
{
    public:
        student(string name, int age)
        {
            stu_name = name;
            stu_age = age;
        }
    private:
        string stu_name;
        int stu_age;
};
int main()
{
    student stu1[3] = student("小明",12); //调用构造函数把三个对象的stu_name和stu_age都初始化为"小明"和12
    student stu2[3] = {student("小明",12),student("小王",13),student("小李",14)};//把三个对象的stu_name和stu_age分别初始化为"小明",12和“小王”,13和"小李",14
    student *stu3[3]; //定义一个指针数组对象
    for(int i = 0; i < 3; i++) //循环依次实例化
    {
        stu3[i] = new student("小明",12); //调用构造函数
    }
}

调用析构函数:
在对象stu1和stu2这两个对象数组中是不需要释放内存的,栈空间的内存系统自动释放,所以在析构函数中并不需要写什么;但是在堆空间中,由于使用了new操作符来申请内存,所以需要程序员手动释放。紧接着上面的代码,如下:

for(int i = 0; i < 3; i++)  //由于创建的是指针数组,所以需要循环释放内存
{
    delete stu3[i];
}

注意:
如果构造函数里面没有传任何参数,那么使用new操作符可以进行如下不同于上面的实例化对象和释放内存操作

student *stu4 = new student[3]; //实例化对象数组
delete []stu4;   //释放内存
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值