您的位置:首页 > 编程语言 > C语言/C++

一道笔试题的理解C++拷贝构造函数

2015-01-18 16:20 183 查看
看下面代码输出

#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之后



此时已经指向空了.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: