KP_1
--VOID*
其他类型的指针可以直接赋值给void*类型指针, 不需要强制类型转换, 但是将void*类型的指针赋值给其他类型的指针, 需要强制类型转换。
KP_2:
判断指针是否为空,可以通过if (ptr)表示指针有效(不为空)。 if(!ptr)表示指针无效(为空)。
KP_3:
对整型进行取非值, 如果为零, 取非则为1, 如果非零, 取非则为0.
KP_4:
struct 使用: http://c.biancheng.net/view/2031.html, 这个网站还涉及socket编程。 自己可以搞一下。
KP_5:
静态成员变量的初始化在类外面
private:
int width;
int height;
static int count;
};
int Rect::count=0;
KP_6:
在栈上定义对象,也可以指定构造函数。 类型 变量名(参数) 其中类型和参数决定了调用哪个构造函数, 构造函数就是由类型和形参组成的。
Rect r; Rect r1(r);
注:写成Rect r(); 是不允许, 不加括号,就是调用其无参数构造函数。
KP_7:
类成员变量不初始化,是个随机值, 并不一定初始化为零。非静态成员变量的初始化, 有3种, 1)构造函数内, 2)初始化列表, 3)就地初始化 = 或者 {} (优先级高)。
https://www.cnblogs.com/zxpo/p/3891981.htm
3 class CBase{
4 public:
5 CBase(){cout<<"mem default="<<mem<<endl;}
6 CBase(int i):mem(i){cout<<"mem init="<<mem<<endl;}
7 int mem{10};
8 };
KP_8: 内存泄露被遗忘的点.
类指针成员变量现指向一个堆内存, 接下来要让它指向另外一个堆内存, 需要先释放之前的堆内存。