C++编程注意问题 分类: C/C++ 2015-04-17 16:59 46人阅读 评论(0) 收藏

1、当用两个迭代器初始化string类型时,如:string str(str1.begin(),str1.begin()+5),实际上,以上是一个前闭后开的区间,也就是说,str1,begin()+5所指向的字符并没有被复制。

2、void * memset ( void * ptr, int value, size_t num );用value初始化ptr所指向的前num区域,一种初始化方法。

3、判断两个浮点数类型的变量是否相等不要用a==b形式,而应该判断两个数绝对值之差是否小于一个阀值。

在代码中对浮点数据类型直接使用== 、<= 、>=、 !=等运算符进行比较都是不正确的。正确的方法应该是 将其差或和于小数进行比较 。

4、数组指针和指针数组傻傻分不清楚:int *p[],首先需要明白[]的优先级高于*,p先和[]结合,说明其是一个数组,再和*结合,说明数组里的变量都是指针;int (*p)[],p先和*结合,所以p是一个指针,再和[]结合,说明指针指向的都是数组。

5、遇到字符串,优先使用string;遇到会变的数组,优先使用vector;能用stl就不要自己写。

6、size_t类型使用特别注意,其不可能为负,所以不要犯size_t t;while(t>=0){--t};这样的错误,因为t永远也不可能为负。

7、判断一个整数是否为奇数,用x%2!=0,不要用x%2==1,因为x也可能为负数。

8、用完new后一定要用delete,它们和(),{},[]一样,都是成对出现的。

9、if(t)、while(t)等等,后面省略的都是“!=0/NULL” ;true为1,false为0;a==b这种形式,相等(为真)返回的是1,不相等(为假)返回的是0;

10、STL标准模板库是C++标准库的一部分,C++标准库还有HP,SGI等实现的STL版本,STL标准模板库中的绝大部分都是在SGI中实现的;不过,在使用时不用管这么多,STL标准库的头文件是没有扩展名的,直接包含相关头文件即可;STL中有很多实用的算法,熟悉其使用可以节省很多时间,而且STL实现的版本性能肯定不会比自己写的差到哪去。

11、

private:只能由1.该类中的函数、2.其友元函数访问。不能被任何其他访问,该类的对象也不能访问。
protected:可以被1.该类中的函数、2.子类的函数、以及3.其友元函数访问。但不能被该类的对象访问。
public:可以被1.该类中的函数、2.子类的函数、3.其友元函数访问,也可以由4.该类的对象访问。 
注:友元函数包括3种:设为友元的普通的非成员函数;设为友元的其他类的成员函数;设为友元类中的所有成员函数。

posted @ 2015-04-17 16:59  朱传林  阅读(128)  评论(0编辑  收藏  举报