一道C++题目,求详解
有如下程序:#include<cstring>#include<iostream>usingnamespacestd;classMyString{public:MyStr...
有如下程序:
#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[len+1];
strcpy(data,s);
}
intmain()
{
MyString a("C++ Programming");
MyString b(a);
return 0;
}
在运行上面的程序时出错,出错的原因是(B)。
A构造函数的实参不允许是本类的对象
B没有定义实现深层复制(深拷贝)的拷贝构造函数
C构造对象a时实参与形参类型不符
D系统不能生成缺省的拷贝构造函数 展开
#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[len+1];
strcpy(data,s);
}
intmain()
{
MyString a("C++ Programming");
MyString b(a);
return 0;
}
在运行上面的程序时出错,出错的原因是(B)。
A构造函数的实参不允许是本类的对象
B没有定义实现深层复制(深拷贝)的拷贝构造函数
C构造对象a时实参与形参类型不符
D系统不能生成缺省的拷贝构造函数 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询