首页 > 编程语言 >C++面试总结(一)--c与c++不同

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

时间:2024-05-06 19:00:23浏览次数:14  
标签:头文件 函数 -- C++ C语言 c++ struct

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语言代码的函数时不会带上函数的参数类型,一般只包括函数名

标签:头文件,函数,--,C++,C语言,c++,struct
From: https://www.cnblogs.com/luo-tt/p/18175668

相关文章

  • 「实用」让你彻底搞定i++与++i的区别
    i++与++i单独用时的效果是一模一样的,但是如果突然要你说他们俩的区别,你又能不能回答上来呢?这篇博文,我们就完全弄懂他们俩兄弟的区别!基本概念i++和++i要是单独使用的话效果是一样的,都是i=i+1,实验证明:i++代码:#include<bits/stdc++.h>usingnamespacestd;intmain(){in......
  • 「实用」这几个写注释的方法,你一定要看一看
    前言大家好,我是Charzie,欢迎来到我的博客,今天这篇文章,我门来谈一谈如何写C++的注释以及应该避免那些写注释的方法C++注释详解在C++编程中,注释是一个非常重要的工具,它可以帮助我们理解代码的功能、逻辑和目的。通过添加注释,我们可以让其他开发者更容易地阅读和理解我们的代码,也可......
  • P9527 [JOISC2022] 洒水器 题解
    题目传送门以下设\(\operatorname{dis}(x,y)\)表示树上\(x,y\)两点间的距离。修改时对\(u\)的周围与\(u\)距离小于等于\(d\)的点的点权乘\(w\)。暴力不行,于是考虑打标记。注意到\(0\led\le40\),一个很自然的想法是:设\(tag(x,i)\)表示将\(x\)的子树内与\(x\)......
  • 【GD32】---- 移植工程模板
    1新建模板文件夹新建一个名叫03_GD32TemplateProject的文件夹,用于建造工程模板2移植官方库文件在模板文件夹里新建5个文件夹,分别存放官方库文件和系统驱动文件01_main存放main函数02_Startup存放系统启动文件03_System存放官方的系统文件04_Firmware_PeripheralD......
  • “AI +”让软件研发更高效更安全
    4月27日,百度副总裁陈洋出席由全国工商联主办的第64届德胜门大讲堂,并发表了《深化大模型技术创新与应用落地,护航大模型产业平稳健康发展》主题演讲。陈洋表示,“人工智能+”成为催生新质生产力的重要引擎,对于企业而言,务必要抓住这一重要机遇,一方面,要持续深化大模型技术的创新与应用......
  • ZCMU-1136
    思路一个数学问题要知道1为奇数,2^x次方一定为偶数。偶数=奇数+奇数,而奇数=奇数*奇数,所以x一定要是奇数才可以。注意没告诉范围所以要往大的方向考虑其中1能够被任一整数整除,所以前面加上对1的判断参考(费马小定理)#include<stdio.h>intmain(){inti,n,temp......
  • 人形机器人机械臂和灵巧手的空间感知、物体识别、具体操作的流程图
    下图来自NVIDIA官方的流程图,这里以此作为借鉴:https://developer.download.nvidia.com/images/isaac/isaac-manipulator-simplified-workflow.svg这个流程图的重点就是先对环境和物体进行感知,通过视觉传感器获得RGBD图像,然后判断其6DPose,在这一步的PoseEstimator完成后......
  • MySQL夺命16问,你能坚持到第几问(转)
    原文:https://zhuanlan.zhihu.com/p/5344154091、数据库三大范式是什么?**第一范式:每个列都不可以再拆分。第二范式:在第一范式的基础上,非主键列完全依赖于主键,而不能是依赖于主键的一部分。第三范式:在第二范式的基础上,非主键列只依赖于主键,不依赖于其他非主键。在设计数据库结......
  • Docker-DevOps-入门手册(全)
    DockerDevOps入门手册(全)原文:zh.annas-archive.org/md5/A074DB026A63DFD63D361454222593A5译者:飞龙协议:CCBY-NC-SA4.0前言Docker与DevOps概述了容器化的强大力量以及这种创新对开发团队和一般运营的影响。我们还将了解DevOps的真正含义,涉及的原则,以及通过实施Dock......
  • 数数 题解
    writeby小超手123题意:现在有四种物品,分别有\(n_{1},n_{2},n_{3},n_{4}\)个,有多少种排列物品的方案使得任意两个相邻物品的种类不同。\(n_{1},n_{2}\le200,\\n_{3},n_{4}\le50000\)。分析:可以考虑先把物品\(A,B\)排列好,再把物品\(C,D\)插入进去。需要注意的......