C++面试八股文:C和C++有哪些区别?
某日小二参加XXX科技公司的C++高级工程师开发岗位1面:
面试官:请问C和C++的区别有哪些?
小二:C++是C的超集。
面试官:还有吗?
小二:...
面试官:面试结束,回去等消息吧。
小二:淦。
小二的答案对吗?
实际上这句话是有问题的,严格的说,C语言和C++有很多交集,这部分交集占了C语言的大部分,占了C++的小部分。

畅销C++书籍作者侯杰老师曾说过,当我们谈论C++的时候,其实在谈论四个方面的东西;
1.面向过程的编程语言
2.面向对象的编程语言
3.STL(Standard Template Library,标准模板库)
4.元编程
其中,只有第一条面向过程的编程语言和C语言的定位重合。
那么我们很容易得出结论,C++独有的功能和特性包括面向对象的编程范式,STL和元编程。那么C中有的,而C++中没有的这部分是什么呢?
主要包含一些语法细节的变动,C++在考虑到安全性、易用性、功能完整性等一系列问题后的实现与C语言现有的实现不同的地方,以下列出一些,并不是完整列表:
1.编译器类型大小不同
如C语言的单个字符编译时占用4个字节,而C++只占用一个字节。
如空结构体在C语言中的大小是0,而在C++中的大小是1。
2.类型检查尺度不同
如C语言中的main函数的返回值可以是任何类型,但在C++中main函数的返回值只能是int类型。
如C语言中从void*转换成任意类型的指针,而C++中必须使用强制转换符。
3.关键字相同但使用不同
如const,auto。
那么回到开头,让我们重新模拟一编开头的面试环节:
面试官:请问C和C++的区别有哪些?
小二:C是面向过程的编程语言,而C++不仅是面向过程的编程语言,还是面向对象的编程语言。同时C++包含了C中所没有的STL,且C++支持函数是编程/泛型编程/元编程。
面试官:还有吗?
小二:C++号称是C的超集,其实大部分时间这句话是对的,但还有一些细微的点C++是不能兼容C语言的,如balabalabala...
面试官:面试结束,请注意保持手机畅通。
小二:好。
C++面试八股文:C和C++有哪些区别?的更多相关文章
- 《面试八股文》之kafka21卷
微信公众号:moon聊技术 关注选择" 星标 ", 重磅干货,第一 时间送达! [如果你觉得文章对你有帮助,欢迎关注,在看,点赞,转发] 大家好,我是moon,最新一篇面试八股文系 ...
- 《面试八股文》之 Redis 16卷
微信公众号:moon聊技术 关注选择" 星标 ", 重磅干货,第一 时间送达! [如果你觉得文章对你有帮助,欢迎关注,在看,点赞,转发] 大家好,我是 moon. redis 作为 ...
- 《面试八股文》之 JVM 20卷
微信公众号:moon聊技术 关注选择" 星标 ", 重磅干货,第一 时间送达! [如果你觉得文章对你有帮助,欢迎关注,在看,点赞,转发] 大家好,我是 moon. <面试八股 ...
- 这可能是最全面的TCP面试八股文了
计算机网络基础,考验一个程序员的基本功,也能更快的筛选出更优秀的人才. 说说TCP的三次握手 假设发送端为客户端,接收端为服务端.开始时客户端和服务端的状态都是CLOSED. 第一次握手:客户端向服务 ...
- 一天吃透MySQL面试八股文
什么是MySQL MySQL是一个关系型数据库,它采用表的形式来存储数据.你可以理解成是Excel表格,既然是表的形式存储数据,就有表结构(行和列).行代表每一行数据,列代表该行中的每个值.列上的值是 ...
- 一天吃透JVM面试八股文
什么是JVM? JVM,全称Java Virtual Machine(Java虚拟机),是通过在实际的计算机上仿真模拟各种计算机功能来实现的.由一套字节码指令集.一组寄存器.一个栈.一个垃圾回收堆和一 ...
- 这可能是最全面的MySQL面试八股文了
什么是MySQL MySQL是一个关系型数据库,它采用表的形式来存储数据.你可以理解成是Excel表格,既然是表的形式存储数据,就有表结构(行和列).行代表每一行数据,列代表该行中的每个值.列上的值是 ...
- 这可能是最全面的Redis面试八股文了
Redis连环40问,绝对够全! Redis是什么? Redis(Remote Dictionary Server)是一个使用 C 语言编写的,高性能非关系型的键值对数据库.与传统数据库不同的是,Re ...
- 三天吃透Spring面试八股文(最新整理)
本文已经收录到Github仓库,该仓库包含计算机基础.Java基础.多线程.JVM.数据库.Redis.Spring.Mybatis.SpringMVC.SpringBoot.分布式.微服务.设计模式 ...
- 三天吃透Java虚拟机面试八股文
本文已经收录到Github仓库,该仓库包含计算机基础.Java基础.多线程.JVM.数据库.Redis.Spring.Mybatis.SpringMVC.SpringBoot.分布式.微服务.设计模式 ...
随机推荐
- 数据库相关知识点整理,助力拿到心仪的offer
1. 数据库的事务 1.1 什么是数据库事务? 事务是指一组逻辑上相关的操作,这些操作要么全部完成,要么全部不完成. 事务是数据库管理系统执行过程中的一个逻辑工作单位,是用户定义的一个操作序列,这些操 ...
- uni-app云开发入门
云函数 首先创建一个uniapp项目,创建项目时选择启用uniCloud云开发. 创建项目成功后,按照下面的步骤进行开发. 创建云函数 1.关联云服务器 2.创建云函数 一个云函数可以看成是一个后 ...
- FastDFS 使用流程
一.什么是FastDFS? FastDFS 是用 C 语言编写的一款开源的分布式文件系统,对文件进行管理,主要功能包括:文件存储.文件同步.文件访问(文件上传.文件下载)等,解决了大容量存储和负载均衡 ...
- odoo 开发入门教程系列-模型之间的关系(Relations Between Models)
模型之间的关系(Relations Between Models) 上一章介绍了为包含基本字段的模型创建自定义视图.然而,在任何真实的业务场景中,我们都需要不止一个模型.此外,模型之间的链接是必要的. ...
- Python集合常用操作
一.集合的介绍 1.定义:集合是无序的,集合中的元素是唯一的,集合一般用于元组或者列表中的元素去重. 2.特性:集合的目的是将不同的值存放在一起,不同的集合间用来做关系运算,无须纠结于集合中的 ...
- [Linux]CentOS7 安装指定版本软件包
以安装openssl-libs为例. 查看当前服务器中YUM源可安装的软件包版本 [root@iz2vc84t88x94kno0u49zwz ~]# yum list | grep openssl-l ...
- [MyBatis]MyBatis问题及解决方案记录
1字节的UTF-8序列的字节1无效 - CSDN 手动将<?xml version="1.0" encoding="UTF-8"?>中的UTF-8更 ...
- Numpy数组乘法
Numpy数组乘法 元素级乘法 numpy.multiply() 或 * : 数组对应位置元素相乘 import numpy as np # 一维数组 a = np.array([1, 2, 3, 4 ...
- CI框架内置分页代码
Controller 控制器代码 <?php defined('BASEPATH') OR exit('No direct script access allowed'); class Welc ...
- Prism Sample 2
例2引入了Region的概念. 例1中我们提到bootstrapper与app.xaml.cs,现在是这样的: public partial class App : PrismApplication ...