$0 是 &0&语言的标准库函数,在 & 语言中需要头文件
-的支持,10 是 &的运算符。对于类的对象而言,
$0 无法满足动态对象的要求,对象在创建的同时要自动执行构造函
数,对象消亡的之前要自动执行析构函数,而 $0 不在编译器控制权
限之内,无法执行构造函数和析构函数。
具体而已,10 和 $0 的区别:
)1 能够自动计算需要分配的内存空间,而 $ 需要手工计算字节数。
)1 和 直接带具体类型的指针,$ 和 返回 的指针。
)1 是类型安全的,而 $ 不是。
')1 一般由两步构成,分别是 1 操作和构造。1 操作对应于 $,
但 1 操作可以重载,可以自定义内存分配策略,不做内存分配,甚至分配到非
内存设备上,而 $ 不行。
()1 将调用构造函数,而 $ 不能; 将调用析构函数,而 不
能。
))$0 需要库函数 - 的支持,而 10 不需要
需要注意的是,有资源的申请,就有资源的释放,否则就会出现资源泄漏的问题,
所以 new/delete,malloc/free 必须配对使用。而 delete 和 free 被调用后,
内存不会立即收回,指针也不会指向空,delete 或 free 仅仅是高诉操作系统,
这一块内存被释放了,可以用做其他用途。但是,由于没有重新对这块内存进行写
操作,所以内存中的变量数值并没有发生变化,出现野指针的情况。因此,释放完
内存后,应该将指针指向置位空。
8 已知 String 类定义,如何实现其函数体。
23 类定义如下:
'
(
)
*
4
5
%
'
623
-7
6666236,89::
666623623;
6666<23
666623;623;
7
6666,$/
#
23772366,
666689::
6666