欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

22_对象数组

程序员文章站 2024-02-29 23:27:22
...

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

22_对象数组

运行结果:

22_对象数组

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

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

运行结果:

22_对象数组

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 *

22_对象数组

注意:没有析构?为哈?

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

22_对象数组

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