c++八股1

  1. 对多态的认识: 在C++中,多态性是面向对象程序设计的一个核心特性,它体现了“一个接口,多种实现”的思想。多态有两种形式:
    静态多态(编译时多态):通过函数重载和运算符重载实现,编译器根据上下文信息在编译阶段就能确定调用的函数版本。
    动态多态(运行时多态):主要通过虚函数机制来实现,当基类指针或引用指向派生类对象时,调用虚函数会根据对象的实际类型而非指针或引用的静态类型决定调用哪个函数。这种特性允许不同的类对象通过统一的接口表现出不同的行为。
    动态多态实现方式: 动态多态是通过虚函数表(Virtual Table)和虚函数指针(VPTR)机制实现的。在包含虚函数的类的对象内部有一个隐藏的VPTR,它指向该类的虚函数表,这个表里存储了对应虚函数的地址。当通过基类指针调用虚函数时,实际上是通过VPTR找到相应的虚函数表并执行对应的函数。
  2. C++11新特性举例:
    智能指针(unique_ptr, shared_ptr, weak_ptr):自动管理内存资源,避免内存泄漏问题。
    右值引用与移动语义:更高效地处理临时对象和资源转移。
    lambda表达式:简化匿名函数的定义和使用。
    auto关键字:用于自动推断变量类型,减少冗余代码。
    范围for循环:遍历容器更加简洁。
    模板alias(using声明):简化复杂的类型名。
    std::thread:支持多线程编程。
    原子操作(atomic):提供线程安全的数据访问。
    variadic templates:可变参数模板。
  3. 智能指针的种类和作用:
    unique_ptr:独占所有权的智能指针,确保同一时间内只有一个对象拥有资源,析构时自动释放内存,不支持拷贝但支持移动。
    shared_ptr:共享所有权的智能指针,多个智能指针可以共享同一个动态分配的对象,通过引用计数管理资源,当所有shared_ptr不再引用该对象时,对象会被自动删除。
    weak_ptr:弱所有权的智能指针,它可以观察由shared_ptr管理的对象而不增加引用计数,主要用于解决shared_ptr之间循环引用导致内存无法释放的问题。
  4. 开发中智能指针的应用场景: 智能指针通常用于需要动态内存分配,并且希望自动管理内存生命周期的地方。例如,在类层次结构中传递和存储对象、在容器如vector、map中保存动态创建的对象等。
  5. 三次握手与四次挥手: 这是TCP连接建立与终止的过程:
    三次握手:客户端发送SYN,服务端回应SYN+ACK,客户端再发送ACK确认,这样双方都确认对方已准备好进行数据传输。
    四次挥手:客户端发送FIN表示数据发送完毕,服务端回应ACK确认;服务端完成数据发送后发送FIN,客户端回应ACK确认。经过这一过程,双方都能确认TCP连接已被正确关闭
  6. 进程间通信方式:
    管道(Pipe)
    有名管道(Named Pipe/FIFO)
    消息队列(Message Queue)
    共享内存(Shared Memory)
    信号量(Semaphore)
    信号(Signal)
    套接字(Socket)
    进程间套接字(Unix Domain Socket)
    符号链接(Symbolic Link)
    以及特定于系统的API如Windows下的邮槽(Mailslot)和剪贴板(Clipboard)等。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 内核学习 3 - 虚拟内存和物理内存

虚拟内存其实是 CPU 和操作系统使用的一个障眼法,联手给进程编织了一个假象,让进程误以为自己独占了全部的内存空间: 在 32 位系统中,进程以为自己独占了 3G 的内存空间。 在 64 位系统中,进程以为自己独占了 128T 的…

NodeJs 第十二章 nodemon

nodemon 是一个监视器,用于监控工程中的文件变化,如果发现文件有变化,可以执行一段脚本。 本章节只介绍基础用法,深入学习请参考 官方文档 安装 全局安装 npm install -g nodemon本地安装 npm install --save-dev nodemon用法 …

杨中科 EFCORE 第四部分 命令详解56-61

Migrations 深入研究Migrations 1、使用迁移脚本,可以对当前连接的数据库执行编号更高的迁移,这个操作叫做“向上迁移” (Up),也可以执行把数据库回退到旧的迁移,这个操作叫“向下迁移(Down) 2、除非有特殊需要&…

机器人行业概况(2)

上篇已经介绍过关于机器人的定义以及分类,下面来看看机器人产业市场规模。 二、国内机器人产业市场规模 中国机器人产业在国家智能制造相关政策的引导下蓬勃发展。在新冠肺炎疫情防控期间,消毒、配送、测温、巡检等各类机器人的“火线上岗”&#xff0…

javascript:javascript去除字符串空格(空白符)

使用js去除字符串内所带有空格,有以下三种方法: 1 replace正则匹配方法 去除字符串内所有的空格 str str.replace(/\s*/g,""); 去除字符串内两头的空格 str str.replace(/^\s*|\s*$/g,""); 去除字符串内左侧的空格 str st…

spring-boot2.7.8添加swagger

一、新建项目swaggerdemo 二、修改pom.xml 注意修改&#xff1a;spring-boot-starter-parent版本为&#xff1a;2.7.8 添加依赖&#xff1a; springfox-swagger2 springfox-swagger-ui springfox-boot-starter <?xml version"1.0" encoding"UTF-8"…

C++日志库——spdlog

介绍 https://github.com/gabime/spdlog.git spdlog is a header only library. Just copy the files under include to your build tree and use a C11 compiler. spdlog是一个仅有头文件的库&#xff0c;只需要拷贝include下面的文件加到本地工程目录并使用支持C11的编译器编…

【打卡】牛客网:BM86 大数加法

题目分析&#xff1a; 因为是大数&#xff0c;所以不能&#xff1a;将string转为int&#xff0c;进行相加后&#xff0c;再int转为string。 而是直接模拟加法过程。 我写的&#xff1a; 一些细节&#xff1a; 需要反转。因为字符串从左到右遍历&#xff0c;加法从右往左遍…

QT第3天

如上图界面&#xff0c;需求如下&#xff1a; 1、根据名字添加水果&#xff0c;并设置好单价 2、切换文件查看模式 3、点击任意水果可以显示单价 4、重量改变时&#xff0c;总价自动显示 //widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <Q…

RH850P1X芯片学习笔记-Flash Memory

文章目录 FeaturesClock Supply Block DiagramFlash SizeMemory ConfigurationRegistersRegister Base AddressList of RegistersRegister Reset Condition 与Flash Memory相关的操作模式Functional OverviewOption BytesOPBT0 — Option Byte 0OPBT1 — Option Byte 1OPBT2 —…

【CSS】保持元素宽高比

保持元素的宽高比&#xff0c;在视频或图片展示类页面是一个重要功能。 本文介绍其常规的实现方法。 实现效果 当浏览器视口发生变化时&#xff0c;元素的尺寸随之变化&#xff0c;且宽高比不变。 代码实现 我们用最简单的元素结构来演示&#xff0c;实现宽高比为4&#xf…

鸿蒙Harmony是如何影响Android工程师的呢?

其实鸿蒙在2019就已经出来了&#xff0c;那时候还是套壳Android的。从2023年9月的发布会上&#xff0c;华为宣布鸿蒙原生应用全面启动、HarmonyOS NEXT亮相以后&#xff0c;围绕着纯血鸿蒙展开的鸿蒙应用生态发展迅猛&#xff0c;目前已经有包括社交、金融、影音、游戏、资讯、…

【Java万花筒】时钟精灵:Java日期库全景剖析

时间漫步者&#xff1a;深入Java时间库实战 前言 在现代软件开发中&#xff0c;处理日期与时间是一个常见而又具有挑战性的任务。Java为我们提供了强大的日期与时间处理库&#xff0c;这些库不仅使日期与时间的操作更加方便&#xff0c;而且满足了各种复杂的需求。本文将深入…

docker-compose和docker compose的区别

在docker实际使用中&#xff0c;经常会搭配Compose&#xff0c;用来定义和运行多个 Docker 容器。使用时会发现&#xff0c;有时候的指令是docker-compose&#xff0c;有时候是docker compose&#xff0c;下面给出解释。 docker官方文档&#xff1a;https://docs.docker.com/c…

ArrayBlockingQueue的使用

异步日志打印模型概述 在高并发、高流量并且响应时间要求比较小的系统中同步打印日志已经满足不了需求了&#xff0c;这是因为打印日志本身是需要写磁盘的&#xff0c;写磁盘的操作会暂时阻塞调用打印日志的业务线程&#xff0c;这会造成调用线程的rt增加。 如图所示为同步日…

WorkPlus领先企业即时通信软件,提升团队沟通效率的利器

在企业工作中&#xff0c;高效沟通是推动团队协作和工作效率的关键。而企业即时通信软件成为了实现高效沟通的利器。作为一款领先的企业即时通信软件&#xff0c;WorkPlus以其卓越的性能和独特的功能&#xff0c;提升团队沟通效率&#xff0c;助力企业实现高效协作。 为什么选择…

豆包ai介绍

豆包是字节跳动基于云雀模型开发的AI工具&#xff0c;具有强大的语言处理能力和广泛的应用场景&#xff0c;无论是在学习、工作、生活中&#xff0c;都能派上用场。 豆包可以帮助打工人和创作者提升效率&#xff0c;完成各种工作任务&#xff0c;又能扮演各类AI角色进行高情商…

win10安装electron卡住

切换镜像源&#xff0c;需要设置ELECTRON_MIRROR才行&#xff0c;win10操作如下&#xff1a; set ELECTRON_MIRRORhttp://npm.taobao.org/mirrors/electron/ npm install --save-dev electron

C++右值引用,右值引用与const引用的区别

1.右值与左值 左值&#xff1a;可以取地址的、有名字的变量&#xff0c;有持久性&#xff1b;右值&#xff1a;一般是不可寻址的常量&#xff0c;或在表达式求值过程中创建的无名临时对象&#xff0c;短暂性的。 2.右值引用 C11新增了另一种引用——右值引用。这种引用可指向…

[学习笔记]刘知远团队大模型技术与交叉应用L1-NLPBig Model Basics

本节主要介绍NLP和大模型的基础知识。提及了词表示如何从one-hot发展到Word Embedding。语言模型如何从N-gram发展成预训练语言模型PLMs。然后介绍了大模型在NLP任务上的表现&#xff0c;以及它遵循的基本范式。最后介绍了本课程需要用到的编程环境和GPU服务器。 一篇NLP方向的…