9月26日

news2024/9/28 18:26:57

1.虚函数与纯虚函数:
在类中定义函数时,在函数前加关键字 virtual ,允许在派生类中重写的方法。那么该函数就是虚函数。
纯虚函数:没有实现的方法,用于定义接口。
2.基类为什么需要虚析构函数:
确保删除派生类对象时,基类的析构函数也能被调用。
3.如何初始化const和static数据成员:
class MyClass {
public:
    const int value = 10; // 类内直接初始化
};
class MyClass {
public:
    static int count;
};

// 类外定义和初始化
int MyClass::count = 0;
4.指针和引用的区别:
1>    引用定义时标识符是&,而指针定义时的标识符是*
2>    定义引用时,必须进行初始化,而定义指针时可以不用初始化
3>    没有空引用,但是可以有空指针
4>    引用一旦指定目标后,就不能进行修改了,而指针后期可以修改指向
5>    引用的使用跟目标一致,而指针的使用需要使用 *运算符
6>    引用就是目标本身,而指针记录的是目标的起始地址
7>    没有多级引用,但是有多级指针
8>    引用不占内存空间,使用的是目标的空间,而指针需要占内存空间
9>    引用的大小跟目标的大小保持一致,而指针的大小全部统一一致都是8字节(64位操作系统)
10>    引用在进行偏移时,就是对目标进行的偏移(如 ref++), 而指针的偏移,就是偏移目标单位内存空间的大小
11>    没有引用数组,但是可以定义指针数组
5.new和malloc的区别:
构造函数和析构函数:

new 会自动调用对象的构造函数,而 malloc 不会。同样地,delete 会自动调用析构函数,而 free 不会。
类型安全:

new 是类型安全的,返回一个正确的指针类型,可以直接赋值给一个指针变量。
malloc 返回 void* 类型,需要显式类型转换。
表达式:

new 是一个运算符,可以与类型一起使用,如 new int。
malloc 是C标准库函数,需要指定分配的字节大小,如 malloc(sizeof(int))。
错误处理:

new 在内存分配失败时抛出 std::bad_alloc 异常(除非使用了 new (nothrow))。
malloc 在失败时返回 nullptr。
重载:

new 和 delete 运算符可以被重载,允许自定义类的内存分配和释放行为。
malloc 和 free 不能被重载,它们定义在全局命名空间。

6.内存泄漏的产生与避免:
产生原因
忘记释放内存:

使用 new 或 malloc 分配了内存,但忘记使用 delete 或 free 释放。
异常导致:

在抛出异常的过程中,如果对象是通过 new 分配的,而没有相应的 delete,那么在异常处理中可能会忘记释放。
野指针:

指针指向已释放的内存,但指针本身未被设为 nullptr,后续可能错误地使用该指针。
循环引用:

在使用智能指针时,如果存在循环引用,智能指针可能无法正确释放内存。

如何避免内存泄漏

使用智能指针:

C++11引入了智能指针,如 std::unique_ptr 和 std::shared_ptr,它们可以自动管理内存。

确保异常安全:

在可能抛出异常的代码块中,确保所有动态分配的内存在异常抛出前被释放。

7.c++的内存分区
栈,堆,全局\静态存储区,常量存储区,代码段,线程局部分区,C++11引入的内存分区

8.说说你常用的设计模式及其应用场景:


9.常用的数据结构有哪些,时间复杂度和空间复杂度如何使用
数组,链表,栈,队列,哈希表,二叉树,堆

时间复杂度:

描述算法随着输入规模增长,执行时间的增长趋势。
常用大O表示法,如 O(1), O(log n), O(n), O(n log n), O(2^n) 等。
空间复杂度:

描述算法随着输入规模增长,所需存储空间的增长趋势。
同样使用大O表示法。
分析算法:在设计算法时,分析算法的时间和空间复杂度,以选择最优解。
优化性能:通过优化算法来降低时间复杂度,或使用更少的空间来降低空间复杂度。

10.描述Qt下Tcp通信的整个流程
包含必要的头文件:

创建QTcpServer:

监听端口:

处理新的连接:

接受连接:

客户端连接服务器:

等待连接成功:

数据传输:

处理数据:

关闭连接:

错误处理:

资源清理:

11.如何使用c++模拟Qt信号和槽
步骤1: 定义信号
首先,定义一个信号,它是一个可以存储和触发回调函数的类。
步骤2: 定义槽
槽是响应信号的函数。你可以定义任何符合信号期望的函数签名的函数或lambda表达式。
步骤3: 连接信号和槽
创建信号和槽的实例,并将槽连接到信号。
12.Qt中的智能指针的特点和用途
指针的特点和用途:
1. QScopedPointer
特点:
自动删除指向的对象。
保证对象的单一所有权。
不能被空值初始化。
用途:
当你需要确保一个对象在作用域结束时被自动删除时使用。
2. QSharedPointer
特点:
使用引用计数机制管理对象的生命周期。
可以被多个指针共享。
当最后一个引用被删除时,对象会被自动删除。
线程安全。
用途:
当需要多个对象共享同一个动态分配的对象时使用。
3. QWeakPointer
特点:
与QSharedPointer配合使用,不增加引用计数。
可以安全地从拥有QSharedPointer的对象中获取弱引用。
当指向的对象被删除时,QWeakPointer会被自动清空。
用途:
用于解决循环引用问题,避免内存泄漏。
4. QPointer
特点:
继承自QObject的类的QObject指针。
自动删除指向的对象,当对象被删除时,指针会被自动设为nullptr。
用途:
当你想要自动管理QObject派生类的生命周期,并且希望在对象被销毁时自动将指针设为nullptr。

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

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

相关文章

使用 Higress AI 插件对接通义千问大语言模型

前言 什么是 AI Gateway AI Gateway 的定义是 AI Native 的 API Gateway,是基于 API Gateway 的能⼒来满⾜ AI Native 的需求。例如: 将传统的 QPS 限流扩展到 token 限流。将传统的负载均衡/重试/fallback 能力延伸,支持对接多个大模型厂…

深入浅出 AbstractQueuedSynchronizer (AQS)

文章目录 什么是 AQSAQS 的工作原理同步状态(state)等待队列 AQS 是如何让线程排队并唤醒的公平锁和非公平锁AQS 的应用场景ReentrantLock(可重入锁)AQS 在 ReentrantLock 中的工作原理典型应用场景 CountDownLatch(倒…

基于Django技术开发的酒店信息管理系统,包括员工用户功能和管理员用户功能两部分

项目摘要 该项目是基于Django技术开发的一套酒店管理系统,系统应用浏览器/服务期(Browser/Server)架构。系统主要包括员工用户功能和管理员用户功能两部分。开发员工信息管理、顾客信息管理、会员信息管理、停车场信息管理、餐厅信息管理、客…

HTML5+CSS3小实例:立方体控件的登录表单

实例:立方体控件的登录表单 技术栈:HTML+CSS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial…

【算法篇】二叉树类(1)(笔记)

目录 一、认识二叉树 1. 二叉树的种类 &#xff08;1&#xff09;满二叉树 &#xff08;2&#xff09;完全二叉树 &#xff08;3&#xff09;二叉搜索树 &#xff08;4&#xff09;平衡二叉搜索树 2. 二叉树的存储方式 3. 二叉树的遍历方式 4. 二叉树的定义 二、Leet…

(done) 使用泰勒展开证明欧拉公式

问问神奇的 GPT&#xff0c;how to prove euler formula? 一个答案如下&#xff1a;

华硕NUC亮相工博会,解锁工业AI PC解决方案

2024年9月24日至28日&#xff0c;中国国际工业博览会于上海国家会展中心盛大举行&#xff0c;华硕智能物联网展台位于展馆6.1H E183展位&#xff0c;在展位上华硕向大众展示了智能AI、物联网设备、华硕NUC等解决方案及IoT硬件产品&#xff0c;吸引了众多专业观众驻足交流和体验…

线程池的执行流程和配置参数总结

一、线程池的执行流程总结 提交线程任务&#xff1b;如果线程池中存在空闲线程&#xff0c;则分配一个空闲线程给任务&#xff0c;执行线程任务&#xff1b;线程池中不存在空闲线程&#xff0c;则线程池会判断当前线程数是否超过核心线程数&#xff08;corePoolSize&#xff09…

EfficientViT(2023CVPR):具有级联组注意力的内存高效视觉Transformer!

EfficientViT: Memory Efficient Vision Transformer with Cascaded Group Attention EfficientViT: 具有级联组注意力的内存高效视觉Transformer 万文长字&#xff0c;请耐心观看~ 论文地址&#xff1a; https://arxiv.org/abs/2305.07027 代码地址&#xff1a; Cream/Effici…

计算机毕业设计 饮食营养管理信息系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

《强化学习的数学原理》(2024春)_西湖大学赵世钰 Ch9 策略梯度方法 -9.3.1

之前看了 2 次视频&#xff0c;公式有点多&#xff0c; 还是没整理出来。 这个版本是以下步骤后的版本 基本把相关的核心论文过了一遍&#xff0c;代码整理了部分 PDF 资料 整理 v3 链接 视频 链接 习题 策略梯度方法需要估计值 函数近似&#xff1a; 状态/动作 价值、策略 参…

C++初阶:STL详解(四)——vector迭代器失效问题

✨✨小新课堂开课了&#xff0c;欢迎欢迎~✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;C&#xff1a;由浅入深篇 小新的主页&#xff1a;编程版小新-CSDN博客 一&#xff1a;迭代器失效的本质 迭代器的主…

VulnStack-红日靶机(二)

红日靶机二 环境搭建 只需要把虚拟机的 host-only&#xff08;仅主机&#xff09;网卡改为 10.10.10.0 网段&#xff0c;如下配置 把 NAT 网卡&#xff0c;改为 192.168.96.0 网段&#xff0c;如下 首先恢复到 v1.3 快照 让后点击放弃&#xff0c;放弃后再开机&#xff0c;用…

Shopify独立站运营必知必会:选品与防封技巧

独立站和第三方平台是目前最常见的跨境电商销售模式&#xff0c;相比于第三方平台&#xff0c;独立站的商家可以自己建站&#xff0c;自行决定运营模式和营销手段等策略&#xff0c;尤其是在准入门槛上&#xff0c;难度会更低&#xff0c;这些特点吸引了不少商家选择独立站开店…

电动车、电单车入梯数据集电动车进电梯检测识别(代码+教程+数据集)

数据集介绍 共有 5347 张图像和一一对应的标注文件 标注文件格式提供了两种&#xff0c;包括VOC格式的xml文件和YOLO格式的txt文件。 标注的对象共有以下几种&#xff1a; [‘Electric-bicycle’] 标注框的数量信息如下&#xff1a;&#xff08;标注时一般是用英文标的&am…

使用shardingsphere实现mysql数据库分片

在大数据时代&#xff0c;随着业务数据量的不断增长&#xff0c;单一的数据库往往难以承载大规模的数据处理需求。数据库分片&#xff08;Sharding&#xff09;是一种有效的数据库扩展技术&#xff0c;通过将数据分布到多个数据库实例上&#xff0c;提高系统的性能和可扩展性。…

图解Lamda使用场景

1.参考如下文章&#xff0c;讲的挺好的 深入浅出 C Lambda表达式&#xff1a;语法、特点和应用 &#xff08;请注意&#xff1a;此链接是本章节的原文&#xff09; 2. 什么是 Lambda表达式&#xff08;截取以上参考文章&#xff09; Lambda表达式是一种在被调用的位置或作为…

每日OJ题_牛客_NC40链表相加(二)_链表+高精度加法_C++_Java

目录 牛客_NC40链表相加&#xff08;二&#xff09;_链表高精度加法 题目解析 C代码 Java代码 牛客_NC40链表相加&#xff08;二&#xff09;_链表高精度加法 链表相加(二)_牛客题霸_牛客网 题目解析 模拟⾼精度加法的过程&#xff0c;只不过是在链表中模拟。 C代码 /*…

107.WEB渗透测试-信息收集-FOFA语法(7)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;106.WEB渗透测试-信息收集-FOFA语法&#xff08;6&#xff09; 密码文件&#xff1a; 语…

MFC设置特定控件字体大小和背景颜色

MFC设置特定控件字体大小和背景颜色 初始化函数里 m_editFont.CreatePointFont(580 , _T("宋体"));m_ctrlEdit.SetFont(&m_editFont);重写消息 HBRUSH CMFCTESTDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) {HBRUSH hbr CDialogEx::OnCtlColor(pDC,…