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
- 20170118C++阶段班04_STL_03MyString练习讲解
- 20170119C++阶段班04_STL_04MyVector练习讲解
- acm练习各个阶段
- 阶段的练习(易错点)
- android项目练习阶段反思
- 15入门阶段综合练习
- 嵌入式班阶段考试试卷(C、C++、Linux部分)
- 课堂练习讲解
- c + +B阶段学习
- 1 C 编译阶段
- c学习阶段总结
- c 各个阶段解释
- 【c++】准备阶段
- 20161224C++阶段班03_Object C++_01对象
- c/c++练习–04
- ACM_ACM入门贴1_阶段练习
- 黑马程序员_阶段练习2
- 传统武式太极拳练习五阶段
- POJ 1611-The Suspects(并查集-同一集合)
- 五大要点助你识别一个网站的seo优化效果
- [Oracle] 启用/禁止主外键
- java:线程池
- I2C电路故障排除---边沿时间与杜邦线
- 20170118C++阶段班04_STL_03MyString练习讲解
- Swift 中 ? ! 使用与理解
- 为什么要用OSPF代替RIPv2
- 2017年 新的开始 新的征程
- LeetCode - 88. Merge Sorted Array - 思路详解 - C++
- Git的诞生
- Rxjava(Rxjava 1.x)
- android 实现view从屏幕中间划出
- 【leetcode】【Easy】【463. Island Perimeter】