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.分布式.微服务.设计模式 ...
随机推荐
- git初始化流程
1. 添加 SSH key 一台主机仅需要设置一次 1.1 检查主机是否已经有 SSH key 只需要检查~/.ssh下是否存在 id_rsa.pub 或 id_dsa.pub.若已存在,跳转至步骤3 ...
- Quicker快速开发,简单的网页数据爬取(示例,获取天眼查指定公司基础工商数据)
前言 有某个线上项目,没有接入工商接口,每次录入公司的时候,都要去天眼查.企查查或者其他公开数据平台,然后手动录入,一两个还好说,数量多了的重复操作就很烦,而且,部分数据是包含超链接,一不注意就点进去 ...
- 【JVM盲点补漏系列】「并发编程的难题和挑战」深入理解JMM及JVM内存模型知识体系
并发编程的难题和挑战 在并发编程的技术领域中,对于我们而言的难题主要有两个: 多线程之间如何进行通信和线程之间如何同步,通信是指线程之间以何种机制来交换信息. 多线程的线程通信机制 在命令式编程中,线 ...
- mapState, mapActions
<template> <div class="box"> <header class="header">分类头部</h ...
- 系统评价——层次分析法AHP的R语言实现(四)
对一个事物的评价往往会涉及多个因素或者多个指标,评价是在多个因素相互作用下的一个综合判断.多指标综合评价方法具有以下的特点:包含若干个指标,分别说明被评价对象的不同方面,评价方法最终要对被评价对象作出 ...
- Centos8发布,下载链接
就在昨天Centos8发布了,今天试着尝鲜,感受:真香. 瞧官网都没有介绍,真香就是了. Centos 8 下载地址:http://ftp.sjtu.edu.cn/centos/8.0.1905/is ...
- modbus_new_rtu
/** * modbus_new_rtu(const char *device, int baud, char parity, int data_bit, int stop_bit); * 这个函数会 ...
- [Java SE]JDK版本特性解读:@PostStruct[JDK1.6-JDK1.8]
1 @PostStruct 1.1 概述 定义及用途 @PostConstruct(javax.annotation.PostConstruct)注解好多人以为是Spring提供的.而实际上是Java ...
- ChatGPT 和 Midjourney 初体验
ChatGPT 和 Midjourney 这两个系统这些天红的发紫,自己也尝试着注册和使用了一下. 一.ChatGPT 我在上周才刚刚注册 OpenAI,注册过程也比较麻烦. 国内的 IP 是无法访问 ...
- 【SSM项目】尚筹网(四)JWT以及基于拦截器的前后端分离登录验证
引入JWT前后端交互 JsonWebToken(JWT),是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准.JWT就是一段字符串,分为三段[头部.载荷.签证]. 1 后端配置 1.1 ...