c/c++注意事项

来源:互联网 发布:淘宝店铺提升信誉 编辑:程序博客网 时间:2024/05/17 02:01
1,在使用变量前初始化他们。包括指针可初始化为NULL。2,返回栈里的对象是危险的,尤其不能返回指针。    char *GetBuff(){char ascii[10];return ascii;}是错误的。3,char类型的符号问题。4,不要依赖表达式的运算次序,一般编译器都进行优化,先进行函数求值,再求复杂表达式,再处理简单数据。5,函数形参的求值是没有次序的。6,转义符号必须小写。7,三元转义,  ??= #,??( [,??< {,??/ \,??) ],??> },??' ^,??! |,??- ~8,数组和数组的指针只有在形参使用中才是等价的,因为形参是不会把数组传入的。9,数组下标运算符可以交换位置。  char*p = &2["kdkkd"];10,如果不想修改数组参数,就把它声名为 const.11,常量指针   const int *p = & i;   int const *p = &i;//不能通过指针修改整数  是等价的。  int *const p =&i 则不同。//不能使指针指向别的变量了。12,避免浮点数相等的比较。13,,运算符执行了其前后的表达式,仅返回右边的表达式的值。14 ,注意typedef的应用。    int (*myfun)();和typedef int (*myfun)() MYFUN;    15,使用位来存储标志位方法是使用结构。16,指针不可做+但可做-运算。并且弄清指针+1发生了什么。17,关于想要修改指针的值的问题。void NextSpace(char ** pStr);调用时使用    char *p;NextSpace(&p);这样将修改指针本身,而不是指针指向的值。如果你    想在函数NextSpace中为p申请一块内存,并在返回后能使用p,就可以这样做。   c++18 , for ,while中声名的变量在出了循环后仍有效。19,在条件语句中声名的变量仅在作用域内有效。20,c++是不允许跳跃一个初始化变量语句的。在case中的声名的局部变量必须使用   括号封闭它。21,要使用类库中的被保护的成员,可以从它继承一个类,声名一个返回该成员引用   型的共有函数。22,成员指针class A{               public :int a;               }         int A::*pint = &A::a;         A a; int x = a.*pint;    事实上成员指针主要用途是指向成员函数的。  class A{public:void  funcA(int);}  void(A::*pFunc)(int) = &A::funcA;  A a;  A *pa = &a;  (a.*pFunc)(8);  (pa->*pFunc)(8);23,静态的成员函数仅能访问静态的数据成员。24,可以使用静态的指针指向活动的对象   class window{public; static window* GetActive(){reutrn pActive;}void OnAcive(){pActive = this;}private :static window* pActive;}25,建议使用const代替define 和enum.26,c++调用c函数可声名   extern "C"{c的函数声名。}27,为使头文件在c和c++中移植#ifdef _cplusplusextern "C"{#endif头文件         #ifdef _cplusplus} #endif28可能导致内存丢失的原因  1,忘记释放。  2 ,程序中有的分支不会释放已经分配的内存。(常见)  3,给已经指向了分配内存的指针分配内存。29,类中的指针成员一定要初始化,可以是NULL。30,当一个类中有指向其他资源的指针,并由类本身释放,那么要写拷贝构造函数。31,在重载=运算符时,应考虑x= x型问题,解决的办法是判断是否是它自己,如果是   直接返回。   if(this = &argValue) return *this;32,当类无须拷贝,则声名拷贝构造函数为私有并可不实现。33,赋值运算符不能继承。34,除构造函数,其他情况下给类的指针赋值必须删除原来的内容。35,如果析构函数外释放指针,应该紧随其后,把它赋值为NULL。36,可以使用一个初始化函数和关闭函数,而不写构造函数和析构函数。37,使用delete [] Array释放用new分配的数组。38,说明拷贝构造函数时必须说明为常量参数。39,析构函数为虚。40,如果对于类的对象之间的指针所指向的内容变化不大,可使用引用计数来确定拷贝    析构函数是否删除指针释放内存。
0 0
原创粉丝点击