急,在线等。C++编程,定义一个字符串类String,包含数据成员int size和char *str.......

定义一个字符串类String,包含数据成员intsize和char*str,成员函数:带一个char*类型参数构造函数、流插入运算符”<<”重载函数使之能实现字符串的输出... 定义一个字符串类String,包含数据成员int size和char *str,成员函数:带一个char*类型参数构造函数、流插入运算符”<<”重载函数使之能实现字符串的输出。编写主函数构造一个字符串并输出。 展开
 我来答
轩落_翼
2015-03-07 · TA获得超过169个赞
知道小有建树答主
回答量:87
采纳率:75%
帮助的人:65.1万
展开全部

我还加了一个>>重载

#include<iostream>
#include<string>

using namespace std;

/*每个成员函数都是只归对象使用的,当一个对象调用成员时,这里面的成员只归该对象所有,只有该对象可以修改*/
class String
{
public:
String();
String(char *ch);
/*复制构造函数在用 该对象的一个对象初始化另一个对象的时候  需要调用复制构造函数*/
String(const String &); //复制构造函数
~String(){ cout << "正在执行析构函数!" << endl; }
friend ostream &operator << (ostream &out, String &a)
{
out << a.p;

return out;
}

friend istream &operator >> (istream &in, String &a)
{
in >> a.p;

return in;
}

private:
String(unsigned short int length);
int len;
char *p;
};

String::String()
{
cout << "调用默认构造函数!" << endl;
len = 0;
p = new char;
*p = '\0';
}

String::String(char *ch)
{
cout << "正在执行带一个参数*ch的构造函数" << endl;
len = strlen(ch);
p = new char[len + 1];
for (int i = 0; i < len; i++)
{
p[i] = ch[i];
}
p[len] = '\0';
}

String::String(unsigned short int length)
{
cout << "正在执行带一个参数unsigned short int 的构造函数" << endl;
len = length;
p = new char[length + 1]; //这里的p是对象str的成员

for (int i = 0; i <= length; i++)
p[i] = '\0';
}

int main()
{
String str("美好世界!");

cout << str << endl;

return 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式