22_对象数组

1、对象数组 本质是数组 只是数组的每个元素是类的对象

运行结果:

2、如果想让对象数组中的元素调用有参构造 必须人为使用 有参构造初始化

void test07()
{
    //对象数组 arr1是数组 每个元素是Person类型的对象
    //定义对象数组的时候 系统会自动给 数组中的每个元素 调用构造函数
    //人为 为元素 调用有参构造
    //初始化部分 调用有参构造 未初始化部分自动调用默认构造(无参构造)
    Person arr1[5]={ Person("lucy",18), Person("bob",20)};
    //arr1[0] 第0个元素 就是Person的对象
    arr1[0].showPerson();
    arr1[1].showPerson();
}

运行结果:

3、用new delete申请 对象数组

void test08()
{
    //第一种方式
    Person *arr = NULL;
    arr = new Person[5];//调用无参构造

    delete [] arr;

    //第二种方式:
    //初始化的元素 调用有参构造 没有初始化 的调用无参构造
    Person *arr2 = new Person[5]{Person("lucy",18), Person("bob",20)};
    (*(arr2+0)).showPerson();
    arr2[0].showPerson();
    (arr2+1)->showPerson();
    delete [] arr2;
}

4、尽量不要用delete释放void *

注意:没有析构?为哈?

delete发现p1指向的类型 为void 无法从void中寻找响应析构函数

5、malloc、free和new、delete 不可以混搭使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值