C++Building Day TWO

来源:互联网 发布:qemu 运行linux 编辑:程序博客网 时间:2024/05/12 03:07

(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的地址是一样的。

0 0
原创粉丝点击