有如下程序: #include<cstring> #include<iostream> using namespace std; class MyString{ public: MyString(const char *

admin2011-01-19  37

问题 有如下程序:    #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

解析 当类中的数据成员有指针时,必须使用深层复制构造函数,否则会发生指针悬挂。在进行函数析构时,会出现指针丢失现象。
转载请注明原文地址:https://kaotiyun.com/show/9HVp777K
0

最新回复(0)