c++后台开发八股文遗漏复习点

c++ primer

  • cht2

常量指针(pointer to constant)与指针常量(constant pointer)。记:常量指针是指向常量的指针。
可以用常量指针指向非常量对象。但是不建议。
不能用非常量引用指向一个常量对象。可以用常量引用指向一个非常量对象。

typedef char* pstring;
const pstring cstr = 0; // 注意:pstring 是一个指向 char 的常量指针。不能采用直接替换的方式将其理解为 const char* cstr = 0,这是错误的。

auto 会忽略引用与顶层 const。

decltype
如果 decltype 使用的表达式是一个变量,则它返回该变量的类型(包括顶层 const 和引用在内)。
如果 decltype 使用的表达式不是一个变量,则 decltype 返回表达式结果对应的类型。可以使用这种方式来保证不获取引用类型。
注意解引用指针的结果是一个引用类型。给变量加括号的结果也是引用类型。赋值操作的结果也是引用类型。

头文件
头文件通常定义那些只能被定义一次的实体,比如类、const、constexpr 等。
头文件一旦改变,相关的源文件必须重新编译以获取更新过的声明。

预处理变量
预处理变量无视作用域的规则,作用范围是文件内
确保头文件多次包含仍能安全工作的常用技术是预处理器。

  • cht3

cctype 头文件中的 isalnum(), isalpha(), isdigit(), isupper(), islowwer(), ispunct(), isspace(), tolower(), toupper() 等类型
区分 int *ptrs[10]; int (*ptrs)[10]; int (&ptrs)[10] 的不同含义

注意:使用范围 for 循环处理多维数组时,除了最内层的循环外,其他所有循环的控制变量都应该是引用类型。
因为如果不声明为引用类型,编译器会自动将控制变量转换为指向数组首元素的指针,就不能在内层继续使用范围 for 循环处理该控制变量了。

push_back 接受一个参数,该参数是要添加到容器尾部的元素的副本。
emplace_back 接受可变数量的参数,这些参数用来在容器尾部就地构造一个新元素。

// push_back
std::vector<T,Allocator>::push_back
void push_back( const T& value );
constexpr void push_back( const T& value );
void push_back( T&& value );
constexpr void push_back( T&& value );

// emplace_back
std::vector<T,Allocator>::emplace_back
template< class... Args >
void emplace_back( Args&&... args );

template< class... Args >
reference emplace_back( Args&&... args );

template< class... Args >
constexpr reference emplace_back( Args&&... args );

cht4
四种显示类型转换是什么:static_cast\dynamic_cast\reinterpret_cast\const_cast( https://blog.csdn.net/Bob__yuan/article/details/88044361 )
static_cast(expression):

用于执行静态类型转换,在编译时确定,通常用于转换非多态类型(如基本数据类型之间的转换)。
可以用于向上转型、向下转型、非多态类型转换以及显式调用单参数构造函数的转换。
在执行转换时,不会进行运行时类型检查,因此可能导致类型不安全的操作。
const_cast(expression):

用于移除对象的 const 或 volatile 限定符,通常用于在需要时取消对象的常量性。
只能用于转换指针或引用,并且不能用于修改对象的常量性,如果试图这样做将会导致未定义行为。
dynamic_cast(expression):

用于执行动态类型转换,在运行时进行类型检查,通常用于处理多态类型。
只能用于转换指向多态类对象的指针或引用,如果转换失败,返回 nullptr(对于指针)或引发 std::bad_cast 异常(对于引用)。
用于安全地执行向下转型(子类到基类)和跨继承层次的转换。
reinterpret_cast(expression):

用于执行低级别的类型转换,通常用于将指针或整数类型转换为其他指针或整数类型。
在转换过程中不进行类型检查,因此非常危险,可能导致未定义行为。
主要用于与底层系统交互或进行强制类型转换,应谨慎使用。

cht6
用实参初始化形参时会忽略掉顶层 const
函数重载无法区分顶层 const 形参和非顶层 const 形参,但是可以区分底层 const 形参与普通形参

内联函数和constexpr函数:
把内联函数和constexpr函数的定义放到头文件里。
constexpr 函数被隐式地指定为内联函数
constexpr 函数的返回类型及所有的形参类型都必须是字面值类型,函数体中必须有且只有一条 return 语句。
内联函数和 constexpr 函数可以多次定义,但是多个定义必须完全一致。

cht7
用mutable声明的变量,const成员函数也能修改
如何在类中定义内联函数。定义在类内部的函数是隐式的inline函数
什么是转换构造函数
explicit 的用法
友元声明只能出现在类的内部,但是具体位置不限,不是类的成员,不受public、private 限制。

c++静态成员函数为什么不能声明为 const ?
在C++中,静态成员函数是属于类而不是类的实例的。因此,const 关键字在静态成员函数中没有意义。const 关键字用于声明成员函数不修改对象的状态,
但是静态成员函数没有this 指针,因此无法通过它来修改对象的状态。
因此,在静态成员函数中声明 const 是没有意义的,也是不允许的。如果尝试在静态成员函数中使用 const 关键字,编译器会报错。

cht9
基本的顺序容器适配器有 3 种,分别是什么?默认底层容器分别是什么?
queue, priority_queue, stack ,queue 和 stack 的底层容器是 deque,priority_queue 的底层容器是 vector
stack 可以构造于 vector, list, deque 之上。
queue 可以构造于 list, deque 之上。
priority_queue 可以构造于 vector、deque 之上。

可以向容器添加元素的三类函数分别是什么,分别可以用于哪种情况?
push, emplace, insert 三类:
push:包括 push_back(), push_front() 两种,单纯的 push() 操作只用于三种顺序容器适配器,一次只能添加一个元素
emplace:包括 emplace(), emplace_back(), emplace_front() 三种,用参数来构造元素,一次只能添加一个元素
insert:包括 insert() 一种,传入一个迭代器指明位置,再迭代器前插入,可以添加单个元素、多个相同元素、某迭代器范围内的所有元素,花括号列表

删除元素的三类操作分别是什么?用于哪种情况?
pop 类:包括 pop_front(), pop_back() 两种,都返回 void 。单纯的 pop 操作只用于顺序容器适配器。
erase 类:包括 erase() 一种,接受迭代器做参数,可以删除一个元素或一个迭代器范围。返回删除元素之后的元素的迭代器
clear:清空整个容器。不能用于适配器。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SOL跟单机器人是什么?

SOL跟单机器人是什么&#xff1f; 顾名思义&#xff0c;就是对方买什么我们买什么。。 solana跟单机器人&#xff0c;炒土狗新思路 跟聪明地址买入及卖出 1.跟随目标地址买入代币&#xff0c;比目标地址慢1-2秒内上链 2.上链稳定&#xff0c;采用jito路径&#xff0c;防止被夹 …

【视频打架行为数据集】打斗场景视频数据集简要介绍

一、UBI-Fight&#xff08;异常事件检测数据集&#xff09; 介绍 UBI-Fights 数据集是一个独特的全新大型数据集&#xff0c;涉及特定的异常检测并仍然在打斗场景中提供广泛的多样性&#xff0c;该数据集包含 80 小时的视频&#xff0c;在帧级别进行了完全注释。由 1000 个视…

三款数据可视化工具深度解析:Tableau、ECharts与山海鲸可视化

在数字化时代&#xff0c;数据可视化工具成为了企业和个人进行数据分析和决策的重要助手。市面上众多数据可视化工具各具特色&#xff0c;本文将为您介绍三款热门的数据可视化工具&#xff0c;帮助您更好地理解和利用数据。 首先&#xff0c;让我们来认识Tableau。Tableau是一款…

opencv4.8 系列一环境搭搭建

open 运行环境&#xff1a; vs2017 下载地址&#xff1a;https://www.123pan.com/s/cVyRVv-ydPWh.html 一&#xff1a;新建项目 二&#xff1a;核心代码&#xff1a; 在这里插入代码片 #include<opencv2/opencv.hpp>int main(int argc,char** argv) {cv::Mat src cv…

windows服务启动提示‘服务没有响应控制功能’(mysql启动报错)

在安装mysql的时候&#xff0c;在windows服务项启动 或 使用命令net start mysql 时启动是报错&#xff0c;提示 服务没有响应控制功能 发生原因&#xff1a; Windows10 x64 或 更高的操作系统&#xff0c;有些系统缺少一些组件 解决办法&#xff1a; 1、下载最新的 Microsoft …

Mybatis入门-----(1)

Mybaits入门 一、Mybaits框架特点 支持定制化SQL、存储过程、基本路线以及高级映射避免了几乎所有JDBC代码中手动设置参数以及获取结果集支持注解式开发、XML开发 二、开发我第一个MYbatis程序 ①打包方式jar ②引入依赖 mybatis依赖mysql驱动 前面两步的pom.xml文件<?…

如何在自己的网站页面中嵌入一个【悬浮音乐播放器】

如何嵌入【悬浮音乐播放器】 前言正文1.打开网易云网页版2.设置自己想要的高度和宽度看注意事项 3.选择是否为自动播放4.在header.php文件中</head>标签前插入下面代码5.在heard.php 中<body>标签后边增加一个 div层6.复制播放器代码到\<div>标签的里边7.保存…

AD修改元器件的引脚长度

这个地方的两个引脚长度不一样 双击其中的一个引脚。 修改这个位置就好了。

Docker学习(二十五)构建 Arthas 基础镜像

目录 一、简介二、构建基础镜像2.1 下载 Arthas2.2 编写 Dockerfile2.3 构建镜像2.4 创建容器2.5 测试 一、简介 Arthas 是一款由 阿里巴巴 开发的 线上监控诊断工具。通过全局视角实时查看应用负载、内存、GC、线程等信息&#xff0c;能在不修改代码的情况下&#xff0c;对业…

SUPIR图像放大模型介绍与实际测试

✨背景 正如&#xff0c;最顶级的料理只需要最简单的烹饪方法一样&#xff0c;图像放大&#xff0c;是设计领域里边最常面对的一个问题&#xff0c;在AI绘画里边也是很常见的一个课题。虽然现在放大算法、放大模型有很多&#xff0c;但是真的能实现的比较好的&#xff0c;并不…

语义分割——json文件转shp

前言 在用labelme标注遥感图像后会生成json文件&#xff0c;如果我们想要shp文件&#xff0c;下面给出了具体实现流程。 一、依赖配置 import json import geopandas as gpd from shapely.geometry import Polygon from osgeo import gdal import argparse import glob import…

【论文解析】笔触渲染生成 前沿工作梳理

最近的一些工作梳理 2023年 Stroke-based Neural Painting and Stylization with Dynamically Predicted Painting Region 2022年Im2Oil: Stroke-Based Oil Painting Rendering with Linearly Controllable Fineness Via Adaptive Sampling 文章目录 1 Stroke-based Neural P…

【海博】雅思该怎么考?

文章目录 考试类型 考试内容 考试形式 备考资源 考试报名 考试成绩 考试类型 学术类&#xff08;A类&#xff09;适用于&#xff1a;出国留学申请本科&#xff0c;研究生及以上学位&#xff0c;或获得专业资质。学术类考试评估考生的英语水平是否满足进行大学或研究生学习…

【C语言】文件操作(1)

为什么使⽤⽂件&#xff1f; 如果没有⽂件&#xff0c;我们写的程序的数据是存储在电脑的内存中&#xff0c;如果程序退出&#xff0c;内存回收&#xff0c;数据就丢失了&#xff0c;等再次运⾏程序&#xff0c;是看不到上次程序的数据的&#xff0c;如果要将数据进⾏持久化的…

Sylar C++高性能服务器学习记录07 【协程模块-知识储备篇】

早在19年5月就在某站上看到sylar的视频了&#xff0c;一直认为这是一个非常不错的视频&#xff0c;由于本人一直是自学编程&#xff0c;基础不扎实&#xff0c;也没有任何人的督促&#xff0c;没能坚持下去&#xff0c;每每想起倍感惋惜。恰逢互联网寒冬&#xff0c;在家无事&a…

vim 插件01:插件管理神器pathogen

1、pathogen简介 Vim 插件 pathogen 是一款历史比较悠久的 Vim 插件管理器。Pathogen 的主要功能是提供一种模块化的方式来管理和加载 Vim 插件。说人话&#xff1a;vim是一款管理各类插件的插卡&#xff0c;使用它会让插件的安装和使用非常方便。 以下是 Pathogen 的主要特点…

【大模型应用篇5】应对裁员潮,突发奇想,打造“收割offer”智能体.......

前段时间飞书大裁员, 不禁让人感到危机四伏,加上《【大模型应用篇4】普通人构建智能体的工具》之前文章介绍了普通人打造智能体的工具, 这节课就带大家利用字节产品coze构建“程序员智能体”, 方便应对裁员,随时做好找工作的准备.打造一款面试智能体,方便各位程序员面试, 这个智…

错误代码126:加载d3dcompiler_43.dll失败,分享多种解决方法

在正常使用电脑的过程中&#xff0c;当我尝试启动并运行一款心仪的游戏时&#xff0c;系统却突然弹出一个令人困扰的错误提示“错误代码126:加载d3dcompiler_43.dll失败”&#xff0c;它会导致游戏无法正常运行。为了解决这个问题&#xff0c;我经过多次尝试和总结&#xff0c;…

22年全国职业技能大赛——Web Proxy配置(web 代理)

前言&#xff1a;原文在我的博客网站中&#xff0c;持续更新数通、系统方面的知识&#xff0c;欢迎来访&#xff01; 系统服务&#xff08;22年国赛&#xff09;—— web Proxy服务&#xff08;web代理&#xff09;https://myweb.myskillstree.cn/114.html 目录 RouterSrv …

OGG extract进程占据大量虚拟内存导致服务器内存异常增长分析

现象 oracle服务器一节点内存&#xff0c;一个月来持续升高&#xff0c;近一月上涨10%左右。 问题分析 OS内存使用情况 使用内存最大的10个进程如下&#xff0c;PID为279417占用最大的内存。 查询279417&#xff0c;发现是ogg相关进程。 发现ogg的extract进程占用了大量的虚拟内…
最新文章