老师发出来了参考文档,我现在要做的事情是根据参考文档写一份“标准化“的MyString程序。

一共就那几个函数嘛,能行的,加油!

三个构造函数 括号里有内容的都为const

复制构造(很容易被忽视但又重要所以很麻烦)

含参构造

默认构造

一个析构函数

老师说很重要然而总是被我们忽视的运算符重载

静态变量

在.h文件中类的最开头(public之前)写static int声明静态变量,在.cpp文件中所有函数之外为该静态变量初始化:类型 类名 ::变量名和值

注意要写一个静态函数用来得到静态变量值

看完了构造、析构和运算符重载函数

可以说是温习了,列出来几点我觉得重要的

既然是构造函数,就不需要delete原来的指针所对的空间,但是复制构造函数是需要的

默认构造的话,分配一个字符串结束符的空间就可以,含参和复制构造函数都要看看拿来赋值的字符串有多长,依据长度为指针开辟空间,一定一定不要忘记开辟空间,而且要为结束符留空间哦

然后用strcpy_s来拷贝,记住中间的那个参数是字符串长度

运算符重载要考虑避免自赋值的问题,而构造函数显然就不需要考虑这个问题

为了可视化构造析构函数,我添加一些输出

不要忘记在构造析构函数中修改静态变量的值

注意如果参数是string这个引用的话,判断要写this和&string的关系,返回如果是引用的话,要写*this

下面进入功能函数

set_string

有点类似含参构造和复制构造函数,只不过参数和返回值都是指针,当然也需要删除原来的空间,根据新的字符串大小分配空间

append

有两个

第一个的参数和返回值都是引用,引用老师没有加const修饰

为什么

把两个字符串接到一起可以用sprintf函数哦

究竟为什么要检查是否自赋值,其他有参函数不需要吗?

内联函数如果没有在声明的时候初始化的话,如果在类外初始化,在返回值类型之前写上inline关键字,要在头文件而不是cpp文件里给出定义

写完所有函数之后别忘了看一下有哪些函数可以写成常函数

现在看看老师的主函数是怎么写的,应该会很快看完的,加油!

注意:

调用静态函数的时候要写类名:函数名

 

posted on 2020-10-09 19:31  Selina_Xie  阅读(64)  评论(0)    收藏  举报