header.h
#ifndef HEADER_H
#define HEADER_H
#include <iostream>
#include <cstring>
using namespace std;
class myString
{
public:
//无参构造
myString();
//有参构造
myString(const char *s);
//拷贝构造
myString(const myString & other);
//析构函数
~myString();
//判空函数
bool isEmpty();
//size函数
int mySize();
//c_str函数
void c_str();
//at函数
char &at(int pos);
private:
char *str; //字符串
int size; //字符串长度
};
#endif // HEADER_H
test.cpp
#include "header.h"
#include <cstring>
//无参构造
myString::myString() : size(10)
{
str = new char[size];
strcpy(str, "");
}
//有参构造
myString::myString(const char *s)
{
size = strlen(s);
str = new char[size + 1];
strcpy(str, s);
}
//拷贝构造
myString::myString(const myString & other)
{
size = other.size;
str = new char[size + 1];
strcpy(str, other.str);
}
//析构函数
myString::~myString()
{
delete (str);
}
//判空
bool myString::isEmpty()
{
return (size == 0) ? true : false;
}
//获取长度
int myString::mySize()
{
return size;
}
//c_str
void myString::c_str()
{
cout<< str << endl;
}
//at
char &myString::at(int pos)
{
char &ch = str[pos];
return ch;
}
main.cpp
#include<header.h>
using namespace std;
int main()
{
//无参
myString s1;
//判空
s1.isEmpty();
//有参
myString s2("aaaAAA");
//判空
s2.isEmpty();
//c_str
s2.c_str();
//at
cout << "s2.at(1): " << s2.at(1) << endl;
myString s3("mmmMMMM");
//at
cout << "s3.at(1): " << s3.at(3) << endl;
//拷贝构造
myString s4 = s3;
//c_str
s4.c_str();
//at
cout << "s4.at(1): " << s4.at(3) << endl;
return 0;
}