C++ 有关问题,求大神指点下面的代码错在哪里为什么编译不通过?

#include<iostream>#include<cstring>usingnamespacestd;classstring{public:string();stri... #include<iostream>
#include<cstring>
using namespace std;
class string
{
public:
string();
string(const string*ch);
string(const string&str);
~string();
int size();
char* c_str();
int count(char ch)const;
void assign(const char*ch);
private:
int _size;
char* _string;
};
string::string()
{
_size=0;
_string=0;
}
string::string(const char*ch)
{
if(!ch)
{
_size=0;
_string=0;
}
else
{
_size=strlen(ch);
_string=new char[_size+1];
strcpy(_string,ch);
}
}
string ::string(const string&str)
{
if(!str._string)
{
_size=0;
_string=0;
}
else
{
_size=str._size;
_string=new char[_size+1];
strcpy(_string,str._string);
}
}
string::~string()
{
delete []_string;
}
int string::size()
{
return strlen(_string);
}
char*string::c_str()
{
return _string;
}
int string::count(char ch)const
{
int cnt=0;
for(int i=0;i<_size;i++)
{
if(_string[i]==ch)
{
++cnt;
}
}
return cnt;
}
void string::assign(const char*ch)
{
if(_string)
{
string::~string();
}
if(!ch)
{
_string=0;
_size=0;
}
else
{
_size=strlen(ch);
_string=new char[_size+1];
strcpy(_string,ch);
}
}
int main()
{
string a;
string b("you are a good student");
string c=b;
a.assign("Good boy");
cout<<"a="<<a.c_str()<<"The length is:"<<a.size()<<endl;
cout<<"b="<<b.c_str()<<"The length is:"<<b.size()<<endl;
cout<<"c="<<c.c_str()<<"The length is:"<<c.size()<<endl;
cout<<b.count('o')<<endl;
return 0;
}
展开
 我来答
风若远去何人留
2015-04-15 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450106
专业C/C++软件开发

向TA提问 私信TA
展开全部

修改如下 问题比较多 没一一注释 你自己对一下吧

#include<iostream>
#include<cstring>
using namespace std;
class mystring
{
public:
 mystring();
 mystring(const char*ch);
 mystring(const mystring&str);
 ~mystring();
 int size();
 char* c_str();
 int count(char ch)const;
 void assign(const char*ch);
private:
 int _size;
 char* _string;
};
mystring::mystring()
{
 _size=0;
 _string=NULL;
}
mystring::mystring(const char*ch)
{
 if(!ch)
 {
  _size=0;
  _string=0;
 }
 else
 {
  _size=strlen(ch);
  _string=new char[_size+1];
  strcpy(_string,ch);
 }
}
mystring ::mystring(const mystring&str)
{
 if(!str._string)
 {
  _size=0;
  _string=0;
 }
 else
 {
  _size=str._size;
  _string=new char[_size+1];
  strcpy(_string,str._string);
 }
}
mystring::~mystring()
{
 delete []_string;
}
int mystring::size()
{
if(_string == NULL) return 0;
 return strlen(_string);
}
char*mystring::c_str()
{
if(_string == NULL) return "NULL";
 return _string;
}
int mystring::count(char ch)const
{
 int cnt=0;
 for(int i=0;i<_size;i++)
 {
  if(_string[i]==ch)
  {
   ++cnt;
  }
 }
 return cnt;
}
void mystring::assign(const char*ch)
{
 if(_string)
 {
  delete []_string;
 }
 if(ch)
 {
  _string=0;
  _size=0;
 }
 else
 {
  _size=strlen(ch);
  _string=new char[_size+1];
  strcpy(_string,ch);
 }
}
int main()
{
 mystring a;
 mystring b("you are a good student");
 mystring c=b;
 a.assign("Good boy");
 cout<<"a="<<a.c_str()<<" The length is:"<<a.size()<<endl;
 cout<<"b="<<b.c_str()<<" The length is:"<<b.size()<<endl;
 cout<<"c="<<c.c_str()<<" The length is:"<<c.size()<<endl;
 cout<<b.count('o')<<endl;
 return 0;
}
更多追问追答
追问
其实我还想问,那个成员函数的类型是mystring没有返回那个对象不会报错吗?求大神解释啊!真的不明白!
追答
哪个成员函数的类型是mystring?
wdghy123
2015-04-15 · TA获得超过1583个赞
知道大有可为答主
回答量:1514
采纳率:95%
帮助的人:715万
展开全部
类string和标准库中的string重名了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式