验证vector变量是在内存中怎么分配的
2015-06-23 13:16
260 查看
#include<iostream> #include <vector> using namespace std; class A { public: A (int i = 0) : m_i (i) { cout << "无参构造:" << this << endl; } A (const A& that) : m_i (that.m_i) { cout << "拷贝构造:" << &that << "->" << this << endl; } A& operator= (const A& that) { cout << "拷贝赋值:" << &that << "->" << this << endl; if (&that != this) m_i = that.m_i; return *this; } ~A (void) { cout << "析构函数:" << this << endl; } private: int m_i; }; int main (void) { vector<A> va (3); return 0; }
从上边的运行结果可以看出vector是先用无参构造在栈里面构造了一个临时变量,再用临时变量做拷贝源,在堆里面用拷贝构造的方式创建了三个对象,所以才有四个构造加四个析构。
相关文章推荐
- 如何用好消息推送(JPush)为app拉新、留存、促活
- MVC工作原理
- SD和QM模块常用bapi
- URAL 1902. Neo-Venice
- python redis
- GRE词汇精选——分享与睡眠
- 七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC
- jquery 自定义click事件执行多次
- java正则表达式
- 黑马程序员——网络编程
- 00-自测2. 素数对猜想 (20)
- 七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC
- 互联网发展趋势
- [leetcode] Contains Duplicate II
- 在伪分布下执行wordcount程序
- Expect相关
- Java设计模式——六大原则之里氏替换
- DeviceNe
- 关于Proftpd
- EasyUI-解决EasyUI 加载两次url的问题