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

来源:互联网 发布:c语言goto怎么用 编辑:程序博客网 时间:2024/06/06 03:07

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指针在堆中创建,余下的一种方法是直接在栈中创建了,希望各位可以在使用的时候认真比较,发现其中的乐趣!

阅读全文
0 0
原创粉丝点击