3. gcc 和 g++的区别
- 简单来说,gcc与g++都是GNU(组织)的一个编译器,都可以编译c代码与c++代码。但是,后缀为.c的,gcc把它当做C程序,而g++当做是C++程序;后缀为.cpp的,两者都会认为是C++程序。编译阶段,g++会调用gcc,对于c++代码,两者是等价的,但是因为gcc命令不能自动和C++程序使用的库联接,所以通常用g++来完成链接。
- c) gcc编译cpp可以使用命令: gcc main.cpp -lstdc++
4. 静态链接、动态链接具体做了什么
- 静态链接是在形成可执行程序前,而动态链接的进行则是在程序执行时链接。
- 静态链接浪费空间,这是由于多进程情况下,每个进程都要保存静态链接函数的副本。更新困难,当链接的众多目标文件中有一个改变后,整个程序都要重新链接才能使用新的版本。但是静态链接运行效率高。
- 动态链接当系统多次使用同一个目标文件时,只需要加载一次即可,节省内存空间。程序升级变得容易,当升级某个共享模块时,只需要简单的将旧目标文件替换掉,程序下次运行时,新版目标文件会被自动装载到内存并链接起来,即完成升级。
- 静态链接是以目标文件为单位的,将各个目标文件连接起来形成可执行文件
- 动态链接的基本思想是把程序按照模块拆分成各个相对独立部分,在程序运行时才将它们链接在一起形成一个完整的程序,而不是像静态链接一样把所有程序模块都链接成一个单独的可执行文件
5. C和C++的区别
- C是面向过程的语言,是一个结构化的语言,考虑如何通过一个过程对输入进行处理得到输出;C++是面向对象的语言,主要特征是“封装、继承和多态”。
- C和C++动态管理内存的方法不一样,C是使用malloc/free,而C++除此之外还有new/delete关键字。
- C++支持函数重载,C不支持函数重载
- C++中有引用,C中不存在引用的概念
6. 面向对象技术的基本概念与特征
(一) 基本概念:类、对象、继承; 基本特征:封装、继承、多态。
(二) 封装:将低层次的元素组合起来形成新的、更高实体的技术,隐藏了实现细节,使得代码模块化。
(三) 继承:通过派生类继承父类的数据和方法,扩展已经存在的模块,实现代码重用。
(四) 多态:“一个接口,多种实现”,通过派生类重写父类的虚函数,实现了接口的重用