一道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系统不能生成缺省的拷贝构造函数
展开
 我来答
owlfeather
2013-12-19 · TA获得超过115个赞
知道小有建树答主
回答量:68
采纳率:0%
帮助的人:111万
展开全部
MyString a("C++ Programming");这个没有错,定义了MyString类型的a。
但是MyString b(a);这地方错了,你的类定义中,没有定义以MyString类型为参数的构造函数。
MyString(const MyString &s); 像这样定义一个拷贝构造函数就行了(实现自己写哦)。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式