C++之创建自定义类型的数组---补充(17)《Effective C++》

2 篇文章 0 订阅
1 篇文章 0 订阅

C++中创建自定义类型的数组的方式有三种,我们分别进行表述:

1、使用new运算符直接在堆中创建:

//使用A的默认构造函数,然后对其进行赋值操作
A* a=new A[size];
A* a=new A[size]();

a[0]=A();
a[1]=A(arguments);
...

2、使用new运算符结合数组类型进行创建:

A* a=new A[size]{A(),A(arguements),...};

3、直接使用数组在栈中直接创建:

A a[size]={A()/A(arguements),...};

下面我们通过一个例子对上述三种创建数组的方式进行比较:

#include <iostream>
#include <string>
using namespace std;
class Base{
private:
    int i;
public:
    Base(){
        cout << "默认构造函数" << endl;
    }
    Base(int i) :i(i){
    }

    friend ostream& operator<<(ostream& os, Base& base){
        os << base.i;
        return os;
    }
    virtual void show(){
        cout << i << endl;
    }
    ~Base(){
        cout << "进行Base的析构:" << i << endl;
    }
};

int main(){
    Base *base0 = new Base[5]{Base(1),Base(2),Base(3),Base(4),Base(5)};
    delete[] base0;
    Base base2[5] = {Base(6),Base(7),Base(8),Base(9),Base(10)};

    Base* base = new Base[5];
    base[0] = Base(11);
    base[1] = Base(12);
    base[2] = Base(13);
    base[3] = Base(14);
    base[4] = Base(15);
    delete[] base;
    return 0;
}

运行结果:
这里写图片描述

所以我们可以看到有三种创建类数组的方法,然后,我们需要其中两类通过new指针在堆中创建,余下的一种方法是直接在栈中创建了,希望各位可以在使用的时候认真比较,发现其中的乐趣!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值