一道笔试题的理解C++拷贝构造函数
2015-01-18 16:20
183 查看
看下面代码输出
我们可以从调试信息看到:
此时pA和pB的data指向同一块内存
数据为"test"
一旦执行了delete pA之后
此时已经指向空了.
#include <iostream> #include <string.h> #include <stdio.h> class A{ char* data; public: A(char* pdata){ int len = strlen(pdata); data = new char[len+1]; memset(data, 0, len+1); memcpy(data, pdata, len); printf("just call me\n"); } ~A(){ if (data){ delete data; } } char* getData(){ return data; } }; int main(){ A* pA = new A("test"); A pB = *pA; delete pA; printf("hhh %s hhh\n", pB.getData()); }第二句发生了拷贝构造,其实这道题是考察深拷贝和浅拷贝。拷贝构造时发生了浅拷贝.
我们可以从调试信息看到:
此时pA和pB的data指向同一块内存
数据为"test"
一旦执行了delete pA之后
此时已经指向空了.
相关文章推荐
- 一道关于C++派生类初始化的笔试题
- 一道迅雷笔试题引发的..写给不知道c/c++序列点的人(转)
- 一道C++笔试题
- 一道c++笔试题
- 一道c++笔试题
- 群硕一道笔试题(java,c++)
- 大华股份的一道笔试题 C/C++
- 一道C++笔试题说一些知识
- 一道C语言笔试题——理解结构体的内存对齐和位域问题
- 每天一道C++笔试题 III --- strcmp
- 由一道笔试题谈C++中const的使用及const_cast转换
- 每天一道C++笔试题 I
- 一道c++笔试题
- 关于C++中在函数中按值返回、临时对象、拷贝构造函数的一点理解
- 【笔试面试知识点查缺补漏深入理解之C与C++篇】C/C++语言void及void指针深层探索
- 通过一道笔试题理解c#静态构造函数
- 深入理解c++拷贝构造函数
- 一道关于C++ 继承/虚函数 笔试题
- 【校园招聘】一道笔试题看c++中virtual覆盖
- 关于C++组合理解以及拷贝构造函数的调用时间的理解