20170118C++阶段班04_STL_03MyString练习讲解

来源:互联网 发布:淘宝女装批发网 编辑:程序博客网 时间:2024/05/01 23:01

编程注意点:

1:每次写类的时候都应该把防止二次编译的#pragma once改成宏定义的形式!

2:写类可以加上自己的命名空间。

3:用到数的时候,可以宏定义,也可以使用#include<limits>里面的一些最值,最好不要用魔数。

4:每次new数组后最好用memset或者其他的函数把内存全部设置成0x00。

5:字符串长度和空间长度要区分开,是否+sizeof(char)要注意,否则可能出错。获取的时候也应该注意下标系和其他系的差别,不能弄错位。

6:指针相加减是带有类型的,运算后不用再/sizeof();了,memset等函数里面传递的是字节数,没带有类型。

7:有些方法有const和非const两个版本([],at(),begin()等),后者可以拿来对数据更改,前者是为了方便const属性的对象来调用,不能修改const对象的数据。

8:在delete的时候char *p = nullptr;  p = new char[10];if(p){delete[]p;}//这个if(p)判断的是p是否有new出空间,如果没有就不会进入。他不会管new出来的空间有不有有效数据。

9:在写拷贝构造函数和operator=的时候一定要注意传递的的对象是否为本身,一开始就因该判断if(*this != rhs);,然后进行操作。

10:非const版本调用const版本:

char& MyString::operator[](size_t pos){return const_cast<char&>(static_cast<const MyString&>(*this)[pos]);//非const版本调用const版本}//先转换成const属性的对象,然后调用[]方法就是调用的const[]的方法,最后转换为const_cast<char&>就好了。const char& MyString::operator[](size_t pos) const{return str_[pos];}


11:传递对象等参数尽量使用引用,以提高效率。类里面重载的一些方法也可以互相调用。

12:统一一元运算符写成类方法,二元运算符写成友元函数的形式,方便不同方式的调用。


0 0
原创粉丝点击