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
- C++之创建自定义类型的数组---补充(17)《Effective C++》
- C++之指针数组和数组指针的区别---补充(9)《Effective C++》
- C++之数组名和指针的区别---补充(10)《Effective C++》
- C++之对象包含与成员函数不兼容的类型限定符---补充(5)《Effective C++》
- C++类型转换操作符---补充(8)《Effective C++》
- C++中string和char数组之间的转换---补充(16)《Effective C++》
- C++之函数返回局部变量的初级探索---补充(3)《Effective C++》
- C++之返回值为reference引用的情况---补充(6)《Effective C++》
- C++之关于static关键字的充电---补充(7)《Effective C++》
- C++ string char* char[]声明的字符串的区别---补充(17)《Effective C++》
- C的构造类型之数组
- C++之析构函数和构造函数调用时间---补充(2)《Effective C++》
- C++之值传递、指针传递和引用传递---补充(4)《Effective C++》
- C++之成员函数内存布局③---补充(13)《Effective C++》
- C++之const对象只能调用const成员函数---补充(18)《More Effective C++》
- C++中的virtual关键字---补充(1)《Effective C++》
- Effective C#: 3.尽量使自定义的类型与公共语言规范兼
- C++中malloc/free和new/delete的区别---补充(15)《Effective C++》
- 根据IP和子网掩码,判断ip是否属于子网
- 【Android】Intent传递数据量过大的问题android.os.TransactionTooLargeException
- 自定义拦截器
- 将文本保存为TXT文档
- WPF中Treeview使用HierarchicalDataTemplate模板之后内容不充满
- C++之创建自定义类型的数组---补充(17)《Effective C++》
- Dev 皮肤控件使用的几种方式
- openvr_survivor第一期开发活动:复位与定位追踪
- 工具:前端参考书籍目录
- 用两个栈实现队列
- 深度学习模型压缩与加速算法之SqueezeNet和ShuffleNet
- python01
- SVN版本冲突问题
- Integer包装类数值比较时值得注意的地方