33,311
社区成员
发帖
与我相关
我的任务
分享
#include "stdafx.h"
#include <cstring>
#include <iostream>
#include "Strings.h"
int Strings::num_strings = 0;
Strings::Strings()
{
length = 1;
str = new char[length];
str[0] = '\0';
}
Strings::Strings(const Strings &st)
{
length = st.length;
str = new char[length]; // waiting for confirmation of the end notation.
std::strcpy(str, st.str);
num_strings ++;
}
Strings::Strings(const char *s)
{
length = std::strlen(s);
str = new char[length];
std::strcpy(str, s);
num_strings ++;
}
Strings::~Strings()
{
delete [] str;
num_strings --;
}
Strings Strings::operator+(const Strings &st)
{
return std::strcat(str, st.str);
}
Strings st1 = "11111111111";
Strings st2("2222222222");
Strings st3 = Strings("3333333333");
Strings Strings::operator+(const Strings &st)
{
char *p = new char [length + strlen(st.str) + 1];
strcpy(p, str);
strcpy(p + length, st.str);
return p;
}
Strings::Strings(const Strings &st)
{
*this = st; //调用赋值操作符
}
Strings& Strings::operator=(const Strings& st)
{
if (this != &st) {
--num_strings;
delete[] str; // 先释放自己原有数据
// 再复制新数据
length = st.length;
str = new char[length + 1];
std::strcpy(str, st.str);
++num_strings;
}
return *this;
}
Strings::Strings(const Strings &st)
{
length = st.length;
str = new char[length + 1]; // waiting for confirmation of the end notation.
std::strcpy(str, st.str);
num_strings ++;
}
Strings::Strings(const char *s)
{
length = std::strlen(s);
str = new char[length + 1];
std::strcpy(str, s);
num_strings ++;
}