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

2024-04-28 04:52

本文主要是介绍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:清空整个容器。不能用于适配器。

这篇关于c++后台开发八股文遗漏复习点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/942365

相关文章

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

【C++ Primer Plus习题】13.4

大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: main.cpp #include <iostream>#include "port.h"int main() {Port p1;Port p2("Abc", "Bcc", 30);std::cout <<

C++包装器

包装器 在 C++ 中,“包装器”通常指的是一种设计模式或编程技巧,用于封装其他代码或对象,使其更易于使用、管理或扩展。包装器的概念在编程中非常普遍,可以用于函数、类、库等多个方面。下面是几个常见的 “包装器” 类型: 1. 函数包装器 函数包装器用于封装一个或多个函数,使其接口更统一或更便于调用。例如,std::function 是一个通用的函数包装器,它可以存储任意可调用对象(函数、函数

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

C++11第三弹:lambda表达式 | 新的类功能 | 模板的可变参数

🌈个人主页: 南桥几晴秋 🌈C++专栏: 南桥谈C++ 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据库学习专栏: 南桥谈MySQL 🌈Qt学习专栏: 南桥谈Qt 🌈菜鸡代码练习: 练习随想记录 🌈git学习: 南桥谈Git 🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈�

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

06 C++Lambda表达式

lambda表达式的定义 没有显式模版形参的lambda表达式 [捕获] 前属性 (形参列表) 说明符 异常 后属性 尾随类型 约束 {函数体} 有显式模版形参的lambda表达式 [捕获] <模版形参> 模版约束 前属性 (形参列表) 说明符 异常 后属性 尾随类型 约束 {函数体} 含义 捕获:包含零个或者多个捕获符的逗号分隔列表 模板形参:用于泛型lambda提供个模板形参的名