C++是对C语言的提升,相对C语言C++到底多了些什么?其实,任何C++能完成的功能,C语言都能完成(其它语言未必能完成,比如偏底层涉及到寄存器的,甚至C和C++都无能为力,需要汇编),从功能上来说,二者是等价的。但是一些显而易见的现象是,完成一个功能用C++需要更少的代码(用汇编则是更多的代码)。就以析构函数为例,只要定义一次,在任何地方用到,只需要声明对象,不需要调用析构函数。C语言则需要每一次都调用一下析构功能的函数。其实C++生成的二进制代码体积更大一些,C++能够以更少的源代码得到更多的二进制代码,根本原因是编译器帮助C++生成了代码。C++的编译器要比C语言的复杂很多。再以C++的虚函数为例,在生成对象时,编译器默认的生成一段代码,这段代码把虚表地址复制到对象的首地址。换成C语言,需要把虚函数定义成一个个自己的成员变量,又需要自己一个个赋值到这些变量上。