数组有何不好之处

从时间和空间的角度来讲,数组是访问内存中连续对象的最佳结构。然而,它同时也是非常底层的数据结构,不当地使用它常常会导致大量潜在的错误。而且,基本上在所有需要用到数组的地方,我们都有更好的替代品。我所说的“更好”是指更易于读写、不易导致错误,以及同等效率。

“new”和“malloc()”的不同点

“malloc()”是个函数,接受(字节)数目作为参数;它返回一个指向未初始化空间的 void * 指针。“new”是个运算符,接受一个类型以及一套该类型的初始值(可选)作为参数;它返回一个指向已被初始化(可选)的该类型的对象的指针。当你想为带有非平凡初始化语义(non-trivial initialization semantics)的用户自定义类型分配空间时,这两者的区别是很明显的。

为什么 C++ 没有通用类对象(universal class Object)

我们不需要这个:大多数情况下,泛型编程提供的静态类型安全机制是非常不错的替代品。其它情况可使用多继承(multiple inheritance)来解决。
不存在有用的通用类:纯粹的通用类本身不含任何语义。
“通用”类会怂恿人们对类型和接口的考虑粗枝大叶,从而导致多余的运行时检查。

为 什么有时对象退出作用域时没有调用析构函数?

正常情况下退出作用域时都会调用析构函数,不过有时也会有这种问题,先看下例子:

也就是说,有些人误以为 new 创建的对象会在函数的最后被析构。

基本上,只有当你希望一个对象能“生存”于其被创建的域之外时,才应该使用“ new”。如果这样,你就需要使用“delete”来析构该对象。例如: