c++输入运算符重载的问题,
#include<iostream>usingnamespacestd;classsing{public:sing();sing(char*);//带一个参数的构造函数i...
#include<iostream>
using namespace std;
class sing
{
public:
sing();
sing(char *);//带一个参数的构造函数
int get(){ return len; }//返回长度
int get()const { return len; }
char* shuchu(){ return str; }//输出字符串
char& operator[](int leng);//重载下标运算符
sing(sing &);//复制构造函数
char operator[](int leng)const;
sing & operator=(const sing &);
friend ostream& operator<<(ostream &d, sing &sd)
{
d << sd.str;
return d;
}
friend istream & operator>>(istream &d, sing &sd)
{
d >> sd.str;
return d;
}
private:
int len;
char * str;
};
char& sing::operator[](int leng)
{
int val = leng;
if (val > len && val < 0)
{
return str[len - 1];
}
else
{
return str[val];
}
cout << "下标运算符";
}
sing::sing()//不带参数的构造函数
{
len = 0;
str = new char[1];
str[0] = '\0';
}
sing::sing(char * p)//带一个参数的构造函数
{
len = strlen(p);
str = new char[len + 1];
for (int i = 0; i < len; ++i)
{
str[i] = p[i];
}
str[len] = '\0';
}
int main(void)
{
sing st("ssssss");
sing st2 = st;
cin >> st2;
cout << st2;
return 0;
}
这个是我作业草稿,有点难看不好意思,我重载的输入运算符》》 输入几个字符没报错,但是一旦输入多了,比如输入10个字符就会报错,是怎么回事求大神 展开
using namespace std;
class sing
{
public:
sing();
sing(char *);//带一个参数的构造函数
int get(){ return len; }//返回长度
int get()const { return len; }
char* shuchu(){ return str; }//输出字符串
char& operator[](int leng);//重载下标运算符
sing(sing &);//复制构造函数
char operator[](int leng)const;
sing & operator=(const sing &);
friend ostream& operator<<(ostream &d, sing &sd)
{
d << sd.str;
return d;
}
friend istream & operator>>(istream &d, sing &sd)
{
d >> sd.str;
return d;
}
private:
int len;
char * str;
};
char& sing::operator[](int leng)
{
int val = leng;
if (val > len && val < 0)
{
return str[len - 1];
}
else
{
return str[val];
}
cout << "下标运算符";
}
sing::sing()//不带参数的构造函数
{
len = 0;
str = new char[1];
str[0] = '\0';
}
sing::sing(char * p)//带一个参数的构造函数
{
len = strlen(p);
str = new char[len + 1];
for (int i = 0; i < len; ++i)
{
str[i] = p[i];
}
str[len] = '\0';
}
int main(void)
{
sing st("ssssss");
sing st2 = st;
cin >> st2;
cout << st2;
return 0;
}
这个是我作业草稿,有点难看不好意思,我重载的输入运算符》》 输入几个字符没报错,但是一旦输入多了,比如输入10个字符就会报错,是怎么回事求大神 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询