跳转至

cpp其他

1、C++和java的区别

语言特性

  • Java语言给开发人员提供了更为简洁的语法;完全面向对象,由于JVM可以安装到任何的操作系统上,所以说它的可移植性强
  • Java语言中没有指针的概念,引入了真正的数组。不同于C++中利用指针实现的“伪数组”,Java引入了真正的数组,同时将容易造成麻烦的指针从语言中去掉,这将有利于防止在C++程序中常见的因为数组操作越界等指针操作而对系统数据进行非法读写带来的不安全问题
  • C++也可以在其他系统运行,但是需要不同的编码(这一点不如Java,只编写一次代码,到处运行),例如对一个数字,在windows下是大端存储,在unix中则为小端存储。Java程序一般都是生成字节码,在JVM里面运行得到结果
  • Java用接口(Interface)技术取代C++程序中的抽象类。接口与抽象类有同样的功能,但是省却了在实现和维护上的复杂性

垃圾回收

  • C++用析构函数回收垃圾,写C和C++程序时一定要注意内存的申请和释放
  • Java语言不使用指针,内存的分配和回收都是自动进行的,程序员无须考虑内存碎片的问题

应用场景

  • Java在桌面程序上不如C++实用,C++可以直接编译成exe文件,指针是c++的优势,可以直接对内存的操作,但同时具有危险性 。(操作内存的确是一项非常危险的事情,一旦指针指向的位置发生错误,或者误删除了内存中某个地址单元存放的重要数据,后果是可想而知的)
  • Java在Web 应用上具有C++ 无可比拟的优势,具有丰富多样的框架
  • 对于底层程序的编程以及控制方面的编程,C++很灵活,因为有句柄的存在

2、C++和Python的区别

  • Python是一种脚本语言,是解释执行的,而C++是编译语言,是需要编译后在特定平台运行的。python可以很方便的跨平台,但是效率没有C++高。
  • Python使用缩进来区分不同的代码块,C++使用花括号来区分
  • C++中需要事先定义变量的类型,而Python不需要,Python的基本数据类型只有数字,布尔值,字符串,列表,元组等等
  • Python的库函数比C++的多,调用起来很方便

3、C++和C语言的区别

  • C++中new和delete是对内存分配的运算符,取代了C中的malloc和free。
  • 标准C++中的字符串类取代了标准C函数库头文件中的字符数组处理函数(C中没有字符串类型)。
  • C++中用来做控制态输入输出的iostream类库替代了标准C中的stdio函数库。
  • C++中的try/catch/throw异常处理机制取代了标准C中的setjmp()和longjmp()函数。
  • 在C++中,允许有相同的函数名,不过它们的参数类型不能完全相同,这样这些函数就可以相互区别开来。而这在C语言中是不允许的。也就是C++可以重载,C语言不允许。
  • C++语言中,允许变量定义语句在程序中的任何地方,只要在是使用它之前就可以;而C语言中,必须要在函数开头部分。而且C++不允许重复定义变量,C语言也是做不到这一点的
  • 在C++中,除了值和指针之外,新增了引用。引用型变量是其他变量的一个别名,我们可以认为他们只是名字不相同,其他都是相同的。
  • C++相对与C增加了一些关键字,如:bool、using、dynamic_cast、namespace等等、
  • C++是**面对对象**的编程语言;C语言是**面对过程**的编程语言。
  • C++可复用性高,C++引入了**模板**的概念,后面在此基础上,实现了方便开发的标准模板库STL。 C++的STL库相对于C语言的函数库**更灵活、更通用**。
  • C语言有一些不安全的语言特性,如指针使用的潜在危险、强制转换的不确定性、内存泄露等。而 C++对此增加了不少新特性来**改善安全性**,如const常量、引用、cast转换、智能指针、try—catch 等等;

面试宝典

  1. C语言是C++的子集,C++可以很好兼容C语言。但是C++又有很多**新特性**,如**引用、智能指针、** **auto变量**等。
  2. C++是**面对对象**的编程语言;C语言是**面对过程**的编程语言。
  3. C语言有一些不安全的语言特性,如指针使用的潜在危险、强制转换的不确定性、内存泄露等。而 C++对此增加了不少新特性来改善安全性,如**const常量、引用、cast转换、智能指针、try—catch** 等等
  4. C++可复用性高,C++引入了模板的概念,后面在此基础上,实现了方便开发的标准模板库STL。 C++的STL库相对于C语言的函数库更灵活、更通用。

6、简述下C++语言的特点

  1. C++在C语言基础上引入了**面对对象**的机制,同时也兼容C语言。
  2. C++有三大特性(1)封装。(2)继承。(3)多态;

  3. C++语言编写出的程序结构清晰、易于扩充,程序可读性好

  4. C++生成的代码质量高,运行效率高,仅比汇编语言慢10%~20%;
  5. C++更加安全,增加了const常量、引用、四类cast转换(static_cast、dynamic_cast、 const_cast、reinterpret_cast)、智能指针、try—catch等等;
  6. C++可复用性高,C++引入了模板的概念,后面在此基础上,实现了方便开发的标准模板库 STL(Standard Template Library)。
  7. 同时,C++是**不断在发展**的语言。C++后续版本更是发展了不少新特性,如C++11中引入了 nullptr、auto变量、Lambda匿名函数、右值引用、智能指针。

8、 简述下C++语言的特点

  1. C++在C语言基础上引入了面对对象的机制,同时也兼容C语言。
  2. C++有三大特性(1)封装。(2)继承。(3)多态;

  3. C++语言编写出的程序结构清晰、易于扩充,程序可读性好。

  4. C++生成的代码质量高,运行效率高,仅比汇编语言慢10%~20%;
  5. C++更加**安全**,增加了const常量、引用、四类cast转换(static_cast、dynamic_cast、 const_cast、reinterpret_cast)、智能指针、try—catch等等;
  6. C++可复用性高,C++引入了**模板的概念**,后面在此基础上,实现了方便开发的标准模板库 STL(Standard Template Library)。
  7. 同时,C++是不断在发展的语言。C++后续版本更是发展了不少**新特性**,如C++11中引入了 nullptr、auto变量、Lambda匿名函数、右值引用、智能指针。

10、C++ library和framework的区别

C++中的库(Library)和框架(Framework)是两个重要的概念,它们在软件开发中具有不同的角色和功能。下面是它们之间的区别:

库(Library)

  • 定义:库是一组预编译好的函数、类、常量或者其他代码模块的集合。它们提供了可重用的功能,开发者可以通过调用库中的函数或使用库中的类来实现特定的操作。

  • 使用方式:开发者可以在自己的代码中引入库,然后调用库中提供的函数或使用库中的类来完成特定的任务。开发者保持对代码的控制,他们使用库中提供的功能,但是整个应用程序的架构由开发者自行设计。

  • 灵活性:库通常具有较高的灵活性,因为开发者可以选择性地使用库的功能,而不需要强制遵循特定的架构或设计模式。

框架(Framework)

  • 定义:框架是一个更大的、更完整的架构,它提供了一种在特定领域内构建应用程序的方式。框架不仅包含了库中的功能,还定义了应用程序的整体结构、设计模式和执行流程。

  • 使用方式:开发者使用框架时,他们需要按照框架提供的设计原则、规则和架构来组织代码。开发者编写自己的代码来填充框架的扩展点,框架则负责控制应用程序的整个执行流程。

  • 约束性:框架通常较为约束性,因为开发者需要按照框架的设计来构建应用程序。框架提供了一种标准化的方式来解决特定领域内的问题。

总结:

  • 是一组功能性代码的集合,开发者可以选择性地使用库中的功能,保持更高的灵活性。
  • 框架 是一个更大的架构,定义了整个应用程序的结构、流程和设计模式,开发者需要按照框架的规则来构建应用程序。

在实际应用中,开发者可以根据项目的需求选择使用库还是框架,以及如何合理地组织代码,以便实现目标。