服务器之家

服务器之家 > 正文

一个string类的简单实现案例

时间:2021-04-26 15:51     来源/作者:编程猫

string类中使用到了赋值构造函数、复制构造函数、构造函数、默认构造函数、析构函数、重载操作符等一些类操作

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
class String
{
    public:
        String()
        {
            data = new char[1];  //这里为什么使用new char[1]呢,虽然是一个字符,这是为了和析构函数保持对称,因为在别的构造函数中使用的char[]
            data[0]='\0';
            length = 0;
        }
        String(const char* str)
        {
            length = strlen(str);
            data = new char[length+1];
            strcpy(data,str);
            data[length]='\0';
        }
        String(const char* str,int n)
        {
            length = n;
            data = new char[n+1];
            strncpy(data,str,n);
            data[length] ='\0';
        }
        String(const String& src) //拷贝构造函数 也就是复制构造函数
        {
            length = src.length;
            data = new char[length+1];
            strcpy(data,src.data);
        }
        String& operator=(const String& src) //赋值构造函数
        {
            if(this == &src)
                return *this;
            delete [] data;
            data = new char[src.length+1];
            strcpy(data,src.data);
            return *this;
        }
        String& operator=(const char* src) //另一种的赋值构造函数
        {
            delete [] data;
            length = strlen(src);
            data = new char[length+1];
            strcpy(data,src);
            return *this;
        }
        char& operator[](int n)
        {
            return data[n];
        }
        const char& operator[](int n) const  //对于const成员函数 最好就是返回const的引用,这样是为了避免返回值被修改
        {
            return data[n];
        }
    friend  ostream& operator<<(ostream& os,const String& st);
         
        ~String()
        {
            delete [] data;
        }
    private:
        char* data;
        int length;
};
ostream& operator<<(ostream& os,const String& st)
{
   os<<st.data;
  return os;
}

以上这篇一个string类的简单实现案例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。

标签:

相关文章

热门资讯

2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
Intellij idea2020永久破解,亲测可用!!!
Intellij idea2020永久破解,亲测可用!!! 2020-07-29
返回顶部