如果这么做完美无瑕,那为什么 C++没有采用呢?因为你必须要为编程的方便付出代价,这
个代价就是运行时刻的开销。就像前面提到的,在 C++中,你在堆栈中创建对象,在这种情
况下,它们可以自动被清除(但是你无法得到在运行时刻你想要得到的灵活性)。在堆栈上
创建对象是为对象分配和释放存储空间最有效的途径。在堆上创建对象可能代价就要高昂得
多。总是从某个基类继承以及所有的方法调用都是多态的也需要较小的开销。但是垃圾回收
器是一个特殊的问题,因为你从来都不确切了解它将于何时启动并将持续多久。这意味着一
个 Java 程序的执行速度会有前后不一致的情况,因此你在某些场合不能使用它,例如强调
程序的执行速度要一致的场合。(此类程序通常被称为实时程序,尽管不是所有的实时编程
问题都是如此严苛。)
C++语言的设计者努力争取 C 程序员的支持,(他们几乎已经成功,但是)却不想添加任何
影响速度的功能,也不想添加任何能够使程序员在选择使用 C 的场合转而选择 C++的新功
个代价就是运行时刻的开销。就像前面提到的,在 C++中,你在堆栈中创建对象,在这种情
况下,它们可以自动被清除(但是你无法得到在运行时刻你想要得到的灵活性)。在堆栈上
创建对象是为对象分配和释放存储空间最有效的途径。在堆上创建对象可能代价就要高昂得
多。总是从某个基类继承以及所有的方法调用都是多态的也需要较小的开销。但是垃圾回收
器是一个特殊的问题,因为你从来都不确切了解它将于何时启动并将持续多久。这意味着一
个 Java 程序的执行速度会有前后不一致的情况,因此你在某些场合不能使用它,例如强调
程序的执行速度要一致的场合。(此类程序通常被称为实时程序,尽管不是所有的实时编程
问题都是如此严苛。)
C++语言的设计者努力争取 C 程序员的支持,(他们几乎已经成功,但是)却不想添加任何
影响速度的功能,也不想添加任何能够使程序员在选择使用 C 的场合转而选择 C++的新功
能。这个目标是实现了,但是付出的代价是在用 C++编程时复杂性极高。