c/c++注意事项

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 _cplusplus
		extern "C"{
	#endif
		头文件
         #ifdef _cplusplus
		}
	 #endif
28可能导致内存丢失的原因
  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,如果对于类的对象之间的指针所指向的内容变化不大,可使用引用计数来确定拷贝
    析构函数是否删除指针释放内存。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值