C++面试笔记(持续更新...)

news/2025/2/23 6:19:53

1.C++的特性

        封装:将数据和具体实现在类中隐藏,对外只留出接口方便调用。

        继承:子类继承父类的方法和全部数据,提高软件按复用率

        多态:自继承的条件下,继承自同一父类的类的同一的方法对同一个事物具有不同的表现状态。

2.C++中类和结构体的区别

        1.默认的访问权限不同:结构体是public,类是private

        2.概念上:结构体偏向于数据的集合,类偏向于数据和行为的集合

3.C++重写,重载,重定义,隐藏

        重写:父类的函数和子类的函数名字参数返回值都相同,父类的函数是虚函数

        重载:在同一作用域内,函数名相同,参数和返回值不同

        重定义:在同一作用域内,函数名,参数,返回值都相同

        隐藏:在继承的条件下,父类中的函数不是虚函数,子类中定义了父类中的函数

4.C++中有哪些默认的函数 (其中7,8是在C++11中有)

        1.构造函数 -- T();

        2.析构函数 -- ~T();

        3.拷贝构造 -- T(const T&);

        4.拷贝赋值运算符 -- T& operator = (const T&);

        5.默认的重载取址 -- T* operator & ();

        6.const默认的重载取址 -- const T* operator & () const;

        7.移动构造函数 -- T(T &&);

        8.移动赋值运算符 -- T& operator = (T&&);

5.指针和引用的区别

        1.指针可以为空,引用不能为空

        2.指针可以有多级指针,引用不能有多级引用

        3.引用必须初始化,指针可以不用初始化

        4.sizeof的值不同,指针返回的是地址控件所占字节数32位系统4字节.64为系统8字节,引用返回的是引用类型的大小

        5.引用是定义了一个变量的别名,指针是存储了变量的地址

        6.引用自加1是引用的实体加1,指针自加1是向后偏移一个类型的大小

6.数组和指针的区别

        1.数组是一种数据结构,指针是一种变量类型

        2.赋值方式不同,指针可以给同类型的指针直接赋值,数组需要一个一个元素赋值

        3.求sizeof,指针的大小一直都是系统的字节数32位4字节,64位8字节,数组的大小是sizeof(arr)/sizeof(arr[0])

7.如何通过一个指针去new一个数组

        int* p = new arr[10];new一个大小为10类型都是int的数组 -- (数组的名就是首元素的地址)

int** arr = new int*[10];  // 创建一个指向10个整型数组的指针
for (int i = 0; i < 10; i++) {
    arr[i] = new int[5];  // 为每个整型数组分配5个整数
}

8.内存的分区

        1.堆区:new 和 malloc申请的空间

        2.栈区:变量和指针

        3.静态区:变量声明为static类型,全局变量

        4.字符常量区:"abc" -- 存放字符

        5.代码区:编译后的二进制文件

9.C++std容器中都用过/都知道哪些(挑自己认为绝对不会说错的说)

        1.std::list 插入时间复杂度O(n) ,删除时间复杂度O(n),查找时间复杂度O(n)

        2.std::vector 尾插如果发生扩容是O(n),未发生扩容是O(1),删除O(n),查找按下标查找O(1),按值查找O(n)

        3.std::map 底层是红黑树,插入O(logN),删除O(logN),查找O(logN)

10.std::vector中push_back函数和emplace_back函数都是尾添加元素的函数有什么区别

        区别在于emplace_back相较于push_back少了对于元素构造和移动元素的时间,emplace_back是直接在容器中构造元素省时间,push_back函数接受一个值或临时对象,emplace_back接受与将要构造的元素类型相同的参数,push_back在接受一个临时对象时会调用拷贝构造,在接受一个左值会调用移动构造

11.栈和队列的区别

        1.栈是先进后出,队列先进后出

        2.栈对栈顶的查找删除插入O(1)

        3.队列对队头的查找和删除是O(1),对队尾插入是O(1) 其余是O(n)

        4.栈多用于递归,队列多用于需要顺序处理的工作如消息队列

12.TCP和UDP有什么区别

        1.TCP是字节流,UDP是报文

        2.TCP会发生粘包,UDP不会

        3.TCP是由连接的UDP是无连接

        4.TCP有流量控制,差错控制等,UDP没有

        5.TCP是传输的数据有序,UDP传输的数据无序

        6.TCP首部20字节,UDP首部8字节

        7.TCP可靠,UDP不可靠

        8.TCP是一对一,UDP是一对一,一对多,多对多


http://www.niftyadmin.cn/n/5863101.html

相关文章

【LeetCode】239. 滑动窗口的最大值

239. 滑动窗口的最大值 单调队列的模板题&#xff0c;但是我一直记不住&#x1f622;。 题目描述如下&#xff1a; 给你一个整数数组 nums&#xff0c;有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右…

使用ArcGIS Pro自动矢量化水系

在地理信息系统&#xff08;GIS&#xff09;领域&#xff0c;自动矢量化是一项至关重要的技术&#xff0c;它能够将栅格图像中的要素转换为矢量数据&#xff0c;从而方便后续的分析和处理。本文将详细介绍如何使用ArcGIS Pro自动矢量化水系&#xff0c;适用于那些颜色相对统一、…

探索YOLO技术:目标检测的高效解决方案

第一章&#xff1a;计算机视觉中图像的基础认知 第二章&#xff1a;计算机视觉&#xff1a;卷积神经网络(CNN)基本概念(一) 第三章&#xff1a;计算机视觉&#xff1a;卷积神经网络(CNN)基本概念(二) 第四章&#xff1a;搭建一个经典的LeNet5神经网络(附代码) 第五章&#xff1…

DVWA 靶场

DVWA 靶场的通关 刚建立和使用 输入 http://dvwa:8898/setup.php //进入用户名 密码 dvwa 你自己设计的想要进入数据库 点击creat 用户名 密码 admin passwordAttack type Sniper模式 在Sniper模式下&#xff0c;Payload字典用于逐个替换请求中标记的位置。例如&#x…

华为发力中端,上半年nova14下半年nova15,大力普及原生鸿蒙

在智能手机市场的激烈竞争中&#xff0c;华为始终以创新者的姿态不断突破。2025年&#xff0c;华为在中端手机领域投下两颗重磅炸弹——上半年推出nova14系列&#xff0c;下半年接力发布nova15系列&#xff0c;且全系搭载原生鸿蒙系统&#xff0c;售价覆盖2000-4000元价格带&am…

【Java】File 类

目录 File 类File 类构造方法常见成员方法判断与获取创建与删除获取并遍历 File 类 File 对象表示一个路径&#xff0c;可以是文件的路径&#xff0c;也可以是文件夹的路径 这个路径可以是存在的&#xff0c;也允许是不存在的 绝对路径和相对路径的区别&#xff1a; 绝对路径…

Redis实战篇《黑马点评》5

5.秒杀优化 5.1异步秒杀思路 我们先来回顾一下下单流程 当用户发起请求&#xff0c;此时会先请求Nginx&#xff0c;Nginx反向代理到Tomcat&#xff0c;而Tomcat中的程序&#xff0c;会进行串行操作&#xff0c;分为如下几个步骤 查询优惠券判断秒杀库存是否足够查询订单校验是…

OpenAI 周活用户破 4 亿,GPT-4.5 或下周发布,微软加紧扩容服务器

导语&#xff1a; OpenAI 近期用户增长迅猛&#xff0c;其下一代 AI 模型 GPT-4.5 和 GPT-5 的发布也日益临近。微软作为 OpenAI 的重要合作伙伴&#xff0c;正积极扩充服务器容量&#xff0c;为新模型的到来做好准备。 OpenAI 首席运营官布拉德莱特卡普&#xff08;Brad Lig…