C++面试总结(一)--c与c++不同

news/2024/10/7 18:27:49

C++面试总结(一)--C与C++不同

c++特点

  1. C++在C语言基础上引入了面对对象的机制,同时也兼容C语言。

  2. C++有三大特性(1)封装。(2)继承。(3)多态;

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

  4. C++生成的代码质量高效率高

  5. C++更加安全,增加了const常量、引用、四类cast转换(static_cast、dynamic_cast、const_cast、reinterpret_cast)、智能指针、try—catch等等;

  6. C++可复用性高,C++引入了模板的概念,标准模板库STL(Standard Template Library)。

    1、说说C语言和C++的区别

    \1. C语言是C++的子集,C++可以很好兼容C语言。但是C++又有很多新特性,如引用、智能指针、

    auto变量等。

    \2. C++是面对对象的编程语言;C语言是面对过程的编程语言。

    \3. C语言有一些不安全的语言特性,如指针使用的潜在危险、强制转换的不确定性、内存泄露等。而

    C++对此增加了不少新特性来改善安全性,如const常量、引用、cast转换、智能指针、try—catch

    等等;

    \4. C++可复用性高,C++引入了模板的概念,后面在此基础上,实现了方便开发的标准模板库STL。

    C++的STL库相对于C语言的函数库更灵活、更通用

    2、说说 C++中 struct class 的区别

    \1. struct 一般用于描述一个数据结构集合,而 class 是对一个对象数据的封装;

    \2. struct 中默认的访问控制权限 public ,而 class 中默认的访问控制权限 private

    \3. 在继承关系中,struct 默认是公有继承,而 class 是私有继承

    \4. class 关键字可以用于定义模板参数,就像 typename,而 struct 不能用于定义模板参数,

    3、include头文件的顺序以及双引号""和尖括号<>的区别

    \1. 区别:

    (1)尖括号<>的头文件是系统文件,双引号""的头文件是自定义文件

    (2)编译器预处理阶段查找头文件的路径不一样。

    \2. 查找路径:

    (1)使用尖括号<>的头文件的查找路径:编译器设置的头文件路径-->系统变量。

    (2)使用双引号""的头文件的查找路径:当前头文件目录-->编译器设置的头文件路径-->系统变

    量。

    4、说说C++结构体和C结构体的区别

    区别:

    (1)C的结构体内不允许有函数存在,C++允许有内部成员函数,且允许该函数是虚函数。

    (2)C的结构体对内部成员变量的访问权限只能是public,而C++允许public,protected,private三种。

    (3)C语言的结构体是不可以继承的,C++的结构体可继承。

    (4)C 中使用结构体需要加上 struct 关键字,而 C++ 中可以省略 struct 关键字直接使用。

    \1. C++ 中的 struct 是对 C 中的 struct 进行了扩充,它们在声明时的区别如下:

image

5、导入C函数的关键字是什么,C++编译时和C有什么不同?

\1. 关键字:在C++中,导入C函数的关键字是extern,表达形式为extern “C”, extern "C"的主要作用就是为了能够正确实现C++代码调用其他C语言代码。加上extern "C"后,会指示编译器这部分代码按C语言的进行编译,而不是C++的。

\2. 编译区别:由于C++支持函数重载,因此编译器编译函数的过程中会将函数的参数类型也加到编译后的代码中,而不仅仅是函数名;而C语言并不支持函数重载,因此编译C语言代码的函数时不会带上函数的参数类型,一般只包括函数名

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/28226.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

「实用」让你彻底搞定i++与++i的区别

i++与++i单独用时的效果是一模一样的,但是如果突然要你说他们俩的区别,你又能不能回答上来呢?这篇博文,我们就完全弄懂他们俩兄弟的区别! 基本概念 i++和++i要是单独使用的话效果是一样的,都是i=i+1,实验证明: i++ 代码: #include<bits/stdc++.h> using namespac…

【GD32】---- 移植工程模板

移植GD32E230的官方库文件,并创建一个工程模板1 新建模板文件夹 新建一个名叫03_GD32TemplateProject的文件夹,用于建造工程模板2 移植官方库文件 在模板文件夹里新建5个文件夹,分别存放官方库文件和系统驱动文件01_main 存放main函数02_Startup 存放系统启动文件03_System …

P9527 [JOISC2022] 洒水器 题解

P9527 [JOISC2022] 洒水器 题解。题目传送门 以下设 \(\operatorname{dis}(x,y)\) 表示树上 \(x,y\) 两点间的距离。修改时对 \(u\) 的周围与 \(u\) 距离小于等于 \(d\) 的点的点权乘 \(w\)。暴力不行,于是考虑打标记。 注意到 \(0\le d\le 40\),一个很自然的想法是:设 \(ta…

OpenStack-容器手册(全)

OpenStack 容器手册(全)原文:zh.annas-archive.org/md5/D8A2C6F8428362E7663D33F30363BDEB 译者:飞龙 协议:CC BY-NC-SA 4.0前言 容器是近年来最受关注的技术之一。随着它们改变了我们开发、部署和运行软件应用程序的方式,它们变得越来越受欢迎。OpenStack 因被全球许多组…

MySQL夺命16问,你能坚持到第几问(转)

原文:https://zhuanlan.zhihu.com/p/534415409 1、数据库三大范式是什么?** 第一范式:每个列都不可以再拆分。 第二范式:在第一范式的基础上,非主键列完全依赖于主键,而不能是依赖于主键的一部分。 第三范式:在第二范式的基础上,非主键列只依赖于主键,不依赖于其他非主…

Docker-DevOps-入门手册(全)

Docker DevOps 入门手册(全)原文:zh.annas-archive.org/md5/A074DB026A63DFD63D361454222593A5 译者:飞龙 协议:CC BY-NC-SA 4.0前言 Docker 与 DevOps 概述了容器化的强大力量以及这种创新对开发团队和一般运营的影响。我们还将了解 DevOps 的真正含义,涉及的原则,以及…

07. C语言程序执行流程控制

【有条件执行语句】 if esle 语句 if else 语句根据一个条件确定是否执行一段代码,执行条件是一个布尔值,布尔值为true则执行,为false则不执行,同时可以设置不符合条件时执行的语句。 if(执行条件) {符合条件时执行的代码; } else {不符合条件时执行的代码; } 使用事项:1.…

用蒙特卡罗方法求积分

实验任务 采用 Monte-Carlo 法计算函数 y=x2 在 0~10 之间的积分值 实验目的 熟悉 MPI_Reduce() 函数的用法 实验方法 该算法的思想是通过随机数把函数划分成小的矩形块,通过求矩形块的面积和来求积分值,我们生成 n 个 0~10 之间的随机数,求出该随机数所对应的函数值作为矩…