申请不同对象调用拷贝构造函数还是默认构造函数
来源:互联网 发布:怎么在韩国淘宝买东西 编辑:程序博客网 时间:2024/06/01 10:50
笔试遇到一个问申请对象调用的是拷贝构造函数还是默认构造函数的问题,研究了一下。
原始代码
vc2010编译器运行结果:/*几种类型申请数据构造函数的调用*/#include <iostream>#include <vector>using namespace std;class ctest{static int defconstruct;//用于保存默认构造函数的调用次数static int copyconstruct;//用于保存copy构造函数的调用次数public: ctest() { ++defconstruct; cout << defconstruct << ": " << "default construct" << endl; } ctest(const ctest& copy) { ++copyconstruct; cout << copyconstruct << ": " << "copyconstruct" << endl; }};int ctest:: defconstruct = 0;int ctest:: copyconstruct = 0;int main(){//测试编译器类型 #if defined(__GNUC__) cout << "GCC" << endl; #endif#if defined(_MSC_VER) cout << "VC" << endl; #endif ctest ctest_arry [5]; ctest *pctest = new ctest[5]; vector<ctest> vctest(5);}
gcc(在windwows下使用的是Code Block 12.11):
结构分析:
对于数组和动态数组,vc和gcc都对每个数组成员调用n次默认构造函数。
对于顺序容器,vc对于每个成员都先调用n次默认构造函数生成临时对象(应该是),然后调用n次copy构造函数。对于gcc来说只调用一次默认构造函数,然后调用n次copy构造函数。
对于顺序容器初始化如果使用自定义类型的非默认构造函数,vc和gcc都采用调用1次带参构造函数和n次copy构造函数。
- 申请不同对象调用拷贝构造函数还是默认构造函数
- 默认拷贝构造函数
- 拷贝构造函数--默认拷贝构造函数
- C++默认拷贝构造函数调用
- 十、构造函数和析构函数(四) 拷贝构造函数、默认拷贝构造函数、拷贝构造函数调用几种情况、深拷贝浅拷贝、构造函数和=操作符区别、禁止对象拷贝
- 默认构造函数和拷贝构造函数
- 拷贝构造函数及其默认构造函数
- 默认构造函数和拷贝构造函数
- [深度探索C++对象模型] 默认构造函数和拷贝构造函数的构造操作
- C++对象模型之默认构造函数的构造操作,拷贝构造函数同
- 默认构造函数和拷贝构造函数(深浅拷贝)
- 自定义拷贝构造函数&&默认的拷贝构造函数
- 默认构造函数,拷贝构造函数,拷贝赋值运算符
- 不知不觉中调用的默认拷贝构造函数
- C++对象的拷贝构造函数 赋值函数 调用情况
- 拷贝构造函数调用总结
- 拷贝构造函数调用总结
- 什么时候调用拷贝构造函数
- POJ 2318 TOYS(计算几何+点与直线位置关系+二分)
- sizeof的相关用法
- Linux ALSA声卡驱动之八:ASoC架构中的Platform
- Django LANGUAGE_CODE
- ios6新特性之下拉刷新UIRefreshControl
- 申请不同对象调用拷贝构造函数还是默认构造函数
- High Performance MySQL
- Coherence - a DLNA/UPnP Framework for the Digital Living
- Could not load the Tomcat server configuration
- java的property配置文件的用法
- Sql server2000字符类型
- Jersey 客户端 API 基础
- 最新中文版虚拟机VMware Workstation
- 空指针 空指针常量