博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vector的push_back对于拷贝构造和赋值操作的调用
阅读量:4079 次
发布时间:2019-05-25

本文共 597 字,大约阅读时间需要 1 分钟。

http://blog.csdn.net/silyvin/article/details/8985323

对应与CArray,补充一个vector的测试。

class A{	int *m_a;	int bb;private:	A();public:	A(int n)	{		m_a = new int;		*m_a = n;	}	A(A const & _a)	{		m_a = 0;		*this = _a;	}	~A()	{		delete m_a;	}	A &operator=(A const &_a)	{		if(this == &_a) return *this;		if(m_a) delete m_a;			m_a = new int;		*m_a = *_a.m_a;		return *this;	}};
vector arr;	A a(1);   	arr.push_back(a);	int fenge = 10;	arr.erase(arr.begin());	fenge = 9;
push_back时生成对象:

0x0012fb48

0x003ba320

两次调用 copy构造,

然后删除第一个临时对象0x0012fb48

erase时调用第二个对象,也就是在容器中对象的析构函数。

如果将vector换成list,则push_back时仅调用一次copy构造。

你可能感兴趣的文章
uva 12260 - Free Goodies (dp,贪心 | 好题)
查看>>
uva-1427 Parade (单调队列优化dp)
查看>>
【设计模式】学习笔记14:状态模式(State)
查看>>
poj 1976 A Mini Locomotive (dp 二维01背包)
查看>>
斯坦福大学机器学习——因子分析(Factor analysis)
查看>>
linux对于没有写权限的文件如何保存退出vim
查看>>
IntelliJ IDEA 下的svn配置及使用的非常详细的图文总结
查看>>
【IntelliJ IDEA】idea导入项目只显示项目中的文件,不显示项目结构
查看>>
ssh 如何方便的切换到其他节点??
查看>>
Java实现DES加密解密
查看>>
HTML基础
查看>>
Java NIO
查看>>
Java大数据:Hbase分布式存储入门
查看>>
大数据学习:Spark RDD操作入门
查看>>
大数据框架:Spark 生态实时流计算
查看>>
大数据入门:Hive和Hbase区别对比
查看>>
大数据入门:ZooKeeper工作原理
查看>>
大数据入门:Zookeeper结构体系
查看>>
大数据入门:Spark RDD基础概念
查看>>
大数据入门:SparkCore开发调优原则
查看>>