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;
} 展开
#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;
} 展开
展开全部
修改如下 问题比较多 没一一注释 你自己对一下吧
#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?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询