1、AString.h文件
#pragma once
#include<iostream>
const int defaultSize = 128;
class AString {
//对象-一个或者多个字符的一个有限序列
public:
//构造函数,构造一个最大长度为sz的字符串
AString(int sz = defaultSize);
//构造函数,由一个已有的字符串构造一个新的字符串
AString(const char* init);
//复制构造函数,有一个已有的字符串对象obj构造一个新的对象
AString(const AString& obj);
//析构函数,释放内存
~AString();
//获取字符串的长度
int Length()const;
//()重载,用于获取一个子字符串,从下标beg开始,到ends结束
AString operator()(const int beg, const int len);
//==重载判断字符串是否相等
bool operator == (const AString& obj);
//!=重载,判断两个字符串是否不等
bool operator != (const AString & obj);
//!重载,判断字符串是否为空
bool operator ! ()const;
//赋值运算符的重载
AString& operator = (const AString& obj);
//+= 运算符的重载
AString& operator += (const AString &obj);
//获取*this的第i个字符
char& operator [] (const int pos)const;
//输入函数重载
friend std::istream& operator >>(std::istream& in, AString& obj);
//输出函数重载
friend std::ostream& operator <<(std::ostream& out, const AString& obj);
//若串obj与*this中的子字符串匹配,则返回子字符串的位置,否则返回-1
int Find(const AString& obj);
private:
char* m_ch; //串存放数组
int m_nCurLength; //串的实际长度
int m_nMaxSize; //串的最大长度
};
2、AString.cpp文件
#include"AString.h"
#include<iostream>
//构造函数,构造一个最大长度为sz的字符串
AString::AString(int sz /*= defaultSize*/) {
m_nMaxSize = sz; //最大长度赋值
m_ch = new char[m_nMaxSize + 1]; //分配内存,加1是为了添加一个字符串结束符
if (m_ch == nullptr) {
std::cout << "内存分配错误&