day44:C++ day4,拷贝赋值、友元、常成员、运算符重载

一、仿照string类,完成myString 类

mystring.h

#ifndef MYSTRING_H
#define MYSTRING_H

#include 
#include 

using namespace std;

class myString
{
private:
    char *str;          //记录c风格的字符串
    int size;            //记录字符串的实际长度
public:
    //无参构造
    myString():size(10)
    {
        str = new char[size];         //构造出一个长度为10的字符串
        strcpy(str,"");         //赋值为空串
        cout<<"无参构造"<size=other.size;
        cout<<"拷贝构造"<)
    bool operator>(const myString &other)const;
    //中括号运算符重载
    char operator[](int index)const;
};

#endif // MYSTRING_H

mystring.cpp:

#include "mystring.h"

//拷贝赋值函数
myString &myString::operator=(const myString &other)
{
    if(this!=&other)
    {
        if(str!=NULL)
        {
            delete []str;
        }
        str=new char[other.size];
        strcpy(str,other.str);
        this->size=other.size;
    }
    return *this;
}
//判空函数
bool myString::string_empty()const
{
    return strcmp(str,"")==0;
}
//size函数
int myString::string_size()const
{
    return size;
}
//c_str函数
const char* myString::c_str()const
{
    return str;
}
//at函数
char &myString::at(int pos)
{
    while(1)
    {
        if(pos<0||pos>=size)
        {
            cout<<"输入格式不对,范围为0~"<)
bool myString::operator>(const myString &other)const
{
    return strcmp(str,other.str)>0;
}
//中括号运算符重载
char myString::operator[](int index)const
{
    while(1)
    {
        if(index<0||index>=size)
        {
            cout<<"输入格式不对,范围为0~"<

main.cpp:

#include "mystring.h"

int main()
{
    myString a("hello world");
    cout<<"字符串a为 "<(a)<

运行结果:

day44:C++ day4,拷贝赋值、友元、常成员、运算符重载_第1张图片

二、思维导图:day3补充: 有道云笔记 day4:有道云笔记

你可能感兴趣的:(c++)