有如下程序:
#include<cstring>
#include<iostream>
using namespace std;
class MyString
public:
MyString(const char * s);
~MyString( )delete[ ]data;
protected:
unsigned len;
char * data;
;
MyString::MyString(const char * s)
len=strlen(s);
data=new char[1en+1];
strcpy(data,s);
int main( )
MyString a("C++Progreanfing");
MyString b(
A.;
return 0;
在运行上面的程序时出错,错误的原因是A) 构造函数的实参不允许是本类的对象
B.没有定义实现深层复制(深复制)的复制构造函数
C.构造对象a时实参与形参类型不符
D.系统不能生成缺失的复制构造函数
参考答案:B
解析: 当类中的数据成员有指针时,必须使用深层复制构造函数,否则会发生指针悬挂。在进行函数析构时,会出现指针丢失现象。