(1)new出来的对象在堆空间,栈空间存放“参数”和“局部变量”
(2)假如没有删除一个指针就对其重新赋值:
int * p = new int;
p = new int;
这样会造成“内存泄露”:第一行定义了一个指针p并使其只想一块内存空间,第二行又将一块新的内存空间的地址赋给了p。这样第一行所开辟的那块空间就无法再使用了,因为指向它的指针已经指向了第二块空间。假如该地址的内存空间没有使用delete p对其进行释放(注:不是删除指针p,而是释放p指向的内存空间),那么你将无法再次通过指针p访问它。
(3)对象在栈与堆中的不同:
Human Jack;//栈中
Human * Jack = new Human;//堆中
栈是系统自动回收的,堆则需要程序员手动回收
(4)“this”指针保存的是对象的地址
(5)删除一个指针后需要立马赋值为0,这是一个好的习惯
(6)
a)常量指针: int const* = new int;p指针不能改变,但p指向的目标的值可以改变
b)指向常量的指针:const int * = new int;p指针可以改变,但这种指针必须要指向常量,不能改变常量的值
c)指向常量的常指针:const int const * p = new int;二者都不可改变
(7)引用就是别名,如:int &mum = num;
mum是num的别名,这样,对mum的操作实际就是对num的操作。mum与num的地址是一样的。