老师发出来了参考文档,我现在要做的事情是根据参考文档写一份“标准化“的MyString程序。
一共就那几个函数嘛,能行的,加油!
三个构造函数 括号里有内容的都为const
复制构造(很容易被忽视但又重要所以很麻烦)
含参构造
默认构造
一个析构函数
老师说很重要然而总是被我们忽视的运算符重载
静态变量
在.h文件中类的最开头(public之前)写static int声明静态变量,在.cpp文件中所有函数之外为该静态变量初始化:类型 类名 ::变量名和值
注意要写一个静态函数用来得到静态变量值
看完了构造、析构和运算符重载函数
可以说是温习了,列出来几点我觉得重要的
既然是构造函数,就不需要delete原来的指针所对的空间,但是复制构造函数是需要的
默认构造的话,分配一个字符串结束符的空间就可以,含参和复制构造函数都要看看拿来赋值的字符串有多长,依据长度为指针开辟空间,一定一定不要忘记开辟空间,而且要为结束符留空间哦
然后用strcpy_s来拷贝,记住中间的那个参数是字符串长度
运算符重载要考虑避免自赋值的问题,而构造函数显然就不需要考虑这个问题
为了可视化构造析构函数,我添加一些输出
不要忘记在构造析构函数中修改静态变量的值
注意如果参数是string这个引用的话,判断要写this和&string的关系,返回如果是引用的话,要写*this
下面进入功能函数
set_string
有点类似含参构造和复制构造函数,只不过参数和返回值都是指针,当然也需要删除原来的空间,根据新的字符串大小分配空间
append
有两个
第一个的参数和返回值都是引用,引用老师没有加const修饰
为什么
把两个字符串接到一起可以用sprintf函数哦
究竟为什么要检查是否自赋值,其他有参函数不需要吗?
内联函数如果没有在声明的时候初始化的话,如果在类外初始化,在返回值类型之前写上inline关键字,要在头文件而不是cpp文件里给出定义
写完所有函数之后别忘了看一下有哪些函数可以写成常函数
现在看看老师的主函数是怎么写的,应该会很快看完的,加油!
注意:
调用静态函数的时候要写类名:函数名
浙公网安备 33010602011771号