C++语言基础

2023-11-05

1.1.1 简述下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匿名函数、右值引用、智能指针。

1.1.2 说说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语言的函数库更灵活、更通用

1.1.3 说说 C++中 struct 和 class 的区别

参考回答

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

  2. struct 中默认的访问控制权限是 public 的,而 class 中默认的访问控制权限是 private 的,例如:

    struct A{  int iNum; // 默认访问控制权限是 public } class B{  int iNum; // 默认访问控制权限是 private }
  3. 在继承关系中,struct 默认是公有继承,而 class 是私有继承;

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

    template<typename T, typename Y> // 可以把typename 换成 class  int Func(const T& t, const Y& y) {      //TODO  }

答案解析

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

    C C++
    成员函数 不能有 可以
    静态成员 不能有 可以
    访问控制 默认public,不能修改 public/private/protected
    继承关系 不可以继承 可从类或者其他结构体继承
    初始化 不能直接初始化数据成员 可以
  2. 使用时的区别:C 中使用结构体需要加上 struct 关键字,或者对结构体使用 typedef 取别名,而 C++ 中可以省略 struct 关键字直接使用,例如:

    struct Student{  int  iAgeNum;  string strName; } typedef struct Student Student2; //C中取别名  struct Student stu1; // C 中正常使用 Student2 stu2;   // C 中通过取别名的使用 Student stu3;   // C++ 中使用

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

参考回答

  1. 区别:

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

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

  2. 查找路径:

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

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

1.1.5 说说C++结构体和C结构体的区别

参考回答

区别:

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

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

(3)C语言的结构体是不可以继承的,C++的结构体是可以从其他的结构体或者类继承过来的。

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

答案解析

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

    C C++
    成员函数 不能有 可以
    静态成员 不能有 可以
    访问控制 默认public,不能修改 public/private/protected
    继承关系 不可以继承 可从类或者其他结构体继承
    初始化 不能直接初始化数据成员 可以
  2. 使用时的区别:C 中使用结构体需要加上 struct 关键字,或者对结构体使用 typedef 取别名,而 C++ 中可以省略 struct 关键字直接使用,例如:

    struct Student{  int  iAgeNum;  string strName; } typedef struct Student Student2; //C中取别名  struct Student stu1; // C 中正常使用 Student2 stu2;   // C 中通过取别名的使用 Student stu3;   // C++ 中使用

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++语言基础 的相关文章

  • 没有强命名的代码签名是否会让您的应用程序容易被滥用?

    尝试了解authenticode代码签名和强命名 我是否正确地认为 如果我对引用一些 dll 非强命名 的 exe 进行代码签名 恶意用户就可以替换我的 DLL 并以看似由我签名但正在运行的方式分发应用程序他们的代码 假设这是真的 那么您似
  • 以文化中立的方式将字符串拆分为单词

    我提出了下面的方法 旨在将可变长度的文本拆分为单词数组 以进行进一步的全文索引处理 删除停止词 然后进行词干分析 结果似乎不错 但我想听听关于这种实现对于不同语言的文本的可靠性的意见 您会建议使用正则表达式来代替吗 请注意 我选择不使用 S
  • WCF RIA 服务 - 加载多个实体

    我正在寻找一种模式来解决以下问题 我认为这很常见 我正在使用 WCF RIA 服务在初始加载时将多个实体返回给客户端 我希望两个实体异步加载 以免锁定 UI 并且我想利用 RIA 服务来执行此操作 我的解决方案如下 似乎有效 这种方法会遇到
  • Web 客户端和 Expect100Continue

    使用 WebClient C NET 时设置 Expect100Continue 的最佳方法是什么 我有下面的代码 我仍然在标题中看到 100 continue 愚蠢的 apache 仍然抱怨 505 错误 string url http
  • 为什么当实例化新的游戏对象时,它没有向它们添加标签? [复制]

    这个问题在这里已经有答案了 using System Collections using System Collections Generic using UnityEngine public class Test MonoBehaviou
  • 嵌套接口:将 IDictionary> 转换为 IDictionary>?

    我认为投射一个相当简单IDictionary
  • 从Web API同步调用外部api

    我需要从我的 Web API 2 控制器调用外部 api 类似于此处的要求 使用 HttpClient 从 Web API 操作调用外部 HTTP 服务 https stackoverflow com questions 13222998
  • BitTorrent 追踪器宣布问题

    我花了一点业余时间编写 BitTorrent 客户端 主要是出于好奇 但部分是出于提高我的 C 技能的愿望 我一直在使用理论维基 http wiki theory org BitTorrentSpecification作为我的向导 我已经建
  • Clang 3.1 + libc++ 编译错误

    我已经构建并安装了 在前缀下 alt LLVM Clang trunk 2012 年 4 月 23 日 在 Ubuntu 12 04 上成功使用 GCC 4 6 然后使用此 Clang 构建的 libc 当我想使用它时我必须同时提供 lc
  • 在 ASP.NET 5 中使用 DI 调用构造函数时解决依赖关系

    Web 上似乎充斥着如何在 ASP NET 5 中使用 DI 的示例 但没有一个示例显示如何调用构造函数并解决依赖关系 以下只是众多案例之一 http social technet microsoft com wiki contents a
  • 将多个表映射到实体框架中的单个实体类

    我正在开发一个旧数据库 该数据库有 2 个具有 1 1 关系的表 目前 我为每个定义的表定义了一种类型 1Test 1Result 我想将这些特定的表合并到一个类中 当前的类型如下所示 public class Result public
  • 重载<<的返回值

    include
  • while 循环中的 scanf

    在这段代码中 scanf只工作一次 我究竟做错了什么 include
  • 这些作业之间是否存在顺序点?

    以下代码中的两个赋值之间是否存在序列点 f f x 1 1 x 2 不 没有 在这种情况下 标准确实是含糊不清的 如果你想确认这一点 gcc 有这个非常酷的选项 Wsequence point在这种情况下 它会警告您该操作可能未定义
  • Windows 窗体:如果文本太长,请添加新行到标签

    我正在使用 C 有时 从网络服务返回的文本 我在标签中显示 太长 并且会在表单边缘被截断 如果标签不适合表单 是否有一种简单的方法可以在标签中添加换行符 Thanks 如果您将标签设置为autosize 它会随着您输入的任何文本自动增长 为
  • WPF/C# 将自定义对象列表数据绑定到列表框?

    我在将自定义对象列表的数据绑定到ListBox in WPF 这是自定义对象 public class FileItem public string Name get set public string Path get set 这是列表
  • 如何在Xamarin中删除ViewTreeObserver?

    假设我需要获取并设置视图的高度 在 Android 中 众所周知 只有在绘制视图之后才能获取视图高度 如果您使用 Java 有很多答案 最著名的方法之一如下 取自这个答案 https stackoverflow com a 24035591
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • IEnumreable 动态和 lambda

    我想在 a 上使用 lambda 表达式IEnumerable
  • C++ 标准是否指定了编译器的 STL 实现细节?

    在写答案时this https stackoverflow com questions 30909296 can you put a pimpl class inside a vector我遇到了一个有趣的情况 这个问题演示了这样一种情况

随机推荐

  • 解决Linux系统中netWork重启不了

    1 查看主机地址 ip addr link other 后既是主机地址 修改 etc sysconfig network scripts ifcfg ens33 查看HWADDR地址 如果没有 添加 如果和ip addr一致 问题解决 2
  • Android Gradle 7.x升级指南

    最近 升级了一下Android项目的Gradle和targetSdkVersion 本文以升级targetSdkVersion 33和Gradle 7 2进行说明 一 升级targetSdkVersion 首先 我将compileSdkVe
  • 操作系统(1) - 死锁的四个必要条件及避免

    一 什么是死锁 死锁是指多个进程因竞争资源而造成的一种僵局 互相等待 若无外力作用 这些进程都将无法向前推进 二 死锁产生的原因 1 系统资源的竞争 系统资源的竞争导致系统资源不足 以及资源分配不当 导致死锁 2 进程运行推进顺序不合适 进
  • 网络优化的指标

    延迟 延迟指的是IP数据包从一个网络端点到另一个网络端点所花费的时间 RTT 往返协议 制约Web性能的主要瓶颈 带宽 两个网络端点之间的连接会一次处理尽可能多的数据量 DNS查询 建立连接的时间 TLS协商时间 首节字节时间 TTFB 指
  • securecrt从服务器获取文件夹,在SecureCRT屏幕下获取数据并存至文件中

    在SecureCRT屏幕上获取数据并存至文件中 在CRT屏幕上获取某个具体位置的文本 可以使用Screen 对象的Get or Get2 方法去获取屏幕上的数据 1 Get 函数包含四个参数 文本第一个字符所在的行号 列号 最后个字符所在的
  • C语言学习路线图 #CSDN博文精选# #IT技术# #C语言# #学习路线# #系统化学习#

    大家好 我是小C 又见面啦 文章过滤器 精选大咖干货 助力学习之路 5天20篇CSDN精选博文带你掌握系统化学习方法 专栏将挑选有关 系统化学习方法 的20篇优质文章 帮助大家掌握更加科学的学习方法 在这里 你将收获 快速掌握系统化学习的理
  • Docker-compose安装

    docker compose docker compose是用于定义和运行多容器docker应用程序的工具 compose 通过一个配置文件来管理多个docker容器 可以使用docker compose yml脚本来启动 停止 重启应用
  • 如何编写测试用例

    用例的五个构成元素 下面从这五个元素的角度 去剖析如何编写测试用例 用例标题 用例标题就是测试点名称 用例标题是用来说明这个用例的测试目的的 好的用例标题是别人看完你这个用例标题后就知道你这个用例是测什么的 但并不是标题越详细越好 既然是标
  • Cdiak

    include
  • 多模态超省钱!JinaChat 面向开发者的大模型服务

    2023年6月25日 Jina AI 发布了 JinaChat 一个面向开发者和终端用户的多模态大模型API 传统大型语言模型往往将竞争力建立在 参数多 和 刷分强 的基础上 然而对于应用开发者来说 传统模型商的 API 并不能很好地让开发
  • STM32F4驱动42步进电机(采用驱动器)

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 器件 实物 接线 TB6600拨码卡关 代码说明 main c 代码如下 示例 main c 代码 极简版 step motor c 代码如下 示例 step mo
  • 机票票面各项内容详解

    ALLOW 或 BAG 说明免费托运行李的限制 记重或记件 例如印 20K 就表示限带 20公斤 超重部分运费还要另计 一般经济舱每人限重为 20 公斤 相关内容见 行李规定 BOOKING REF 订票代号 CARRIER 表示 航空公司
  • Nginx启动,重启以及基本命令

    1 启动nginx 进入nginx安装目录执行 sbin nginx c conf nginx conf 2 验证nginx配置文件是否正确 方法1 进入nginx安装目录sbin下 输入命令 nginx t 回显test is succe
  • ubuntu工具列表

    微信 GitHub zq1997 deepin wine deepin源移植 Debian Ubuntu上最快的QQ 微信安装方式 FileZilla ftp sftp连接服务器 Ubuntu18 04安装FileZilla ubuntu安
  • 程序设计之归并排序

    6 86 归并排序 10 分 本题要求实现二路归并排序中的归并操作 待排序列的长度1 lt n lt 1000 函数接口定义 void Merge SqList L int low int m int high 其中L是待排序表 使排序后的
  • 阿里前端开发工具Weex安装学习

    支持原创 更多内容欢迎关注作者博客 http www china10s com blog p 314 移动互联网的开发方式 最开始的手机厂商定制版的封闭系统开发 到后来智能机出现之后 Android和iOS异军突起 形成了两大独立的阵营 这
  • Table is marked as crashed and should be repaired 解决办法

    遇到这个问题几个敲命令轻松搞定 1 首先进入mysql命令台 mysql u root p 回车 输入密码 2 查询所有的库 mysql gt show databases 3 进入数据库 eduyun 2015 sp1 是库名 mysql
  • JAVA设计模式(15)-解释器模式

    定义 给定一种语言 定义他的文法的一种表示 并定义一个解释器 该解释器使用该表示来解释语言中句子 类型 行为类模式 类图 解释器模式是一个比较少用的模式 本人之前也没有用过这个模式 下面我们就来一起看一下解释器模式 解释器模式的结构 抽象解
  • mac 如何安装hp laserjet m1136驱动

    直接在苹果的官网下载驱动就可以了 要下V5 1的那个版本https support apple com kb DL1888 viewlocale zh CN locale zh CN 选择系统偏好设置中的打印机 然后选择相对应的版本就可以了
  • C++语言基础

    1 1 1 简述下C 语言的特点 参考回答 C 在C语言基础上引入了面对对象的机制 同时也兼容C语言 C 有三大特性 1 封装 2 继承 3 多态 C 语言编写出的程序结构清晰 易于扩充 程序可读性好 C 生成的代码质量高 运行效率高 仅比