第五章-程序设计基本概念(2)

来源:互联网 发布:淘宝系统排查时间 编辑:程序博客网 时间:2024/06/07 09:14

5.7  C和C++关系

C语言偏底层,简洁但是麻烦。抽象起来不像其他的语言那样方便。所以应用大部分都是硬件或者是系统组件。

C++结合了C语言的底层编程能力同时提供了丰富抽象能力,同时无可避免的增加了语言的复杂度。换句话说,做事情的方法不止一种,而用C++就可以给你几乎所有的选择,于是C++能利用各种抽象做所有事情(当然前提是你能驾驭得起。)


例题1:在C++程序中调用被C编译器编译后的函数,为什么要加 extern "C" ?

extern "C" 表示按照C语言方式进行连接

C++语言支持函数重载,C语言不支持函数重载(重载:重载就是同一个名字,不同的参数表(类型、顺序、个数都不一样)。)。函数被C++编译后在库中的名字与C语言的不同。假设某个函数的原型为void foo(int x,int y).该函数被C编译器编译后在库中的名字为_foo,而在C++编译器则会产生像 _foo_int_int 之类的名字。

例题2:头文件中的Ifndef/define/endif 作用?

防止该头文件被重复引用。

例题3:评价一下C与C++的各自特点。如果一个程序既需要大量运算,又要有一个好的用户界面,还需要与其他软件大量交流,应该怎样选择合适的语言?

C是一种结构化语言,重点在于算法与数据结构。C程序的设计首先考虑的是如何通过一个过程,对输入或环境条件进行运算处理得到输出(或实现过程控制),而对于C++,首先考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过对象的状态信息得到输出或实现过程控制。

对于大规模数值运算,C/C++和Java/.NET之间没有明显的性能差异。不过,如果运算设计向量计算、矩阵运算可以使用FORTRAN或者MATLAB编写计算组件。

大规模用户界面相关的软件则可以考虑使用.NET(windows环境)进行开发,而且.NET和COM之间的互操作容易,且.NET对数据库访问的支持好。

0 0
原创粉丝点击