Qt 每日面试题 -6

51、如果软件除了问题(Bug ),如何快速定位?主要方法有哪些?

打印输出/代码调试/日志记录/分析工具/找同事讨论。

  1. 二分法定位技巧
    无论是有多复杂的代码,利用二分法定位技巧一般都是可以定位到问题所在。从二分法定位技巧可以延伸出一些具体的处理bug的方法,比如:对输入数据二分、对代码版本二分、注释掉部分代码、在不同位置插入试探性代码、对运行环境二分。

  2. IDE调试
    IDE的VS debug的功能简直就是立竿见影。它可以加断点,单步调试。
    单步调试可以让我们对代码逻辑,执行顺序,以及各种中间结果更加清晰。
    至于本身容易出错的BUG,用IDE调试简直是再合适不过了。

  3. 重新读一遍程序
    相对新手程序员来说,如果代码出现bug,可以重新读一遍程序。这种方法是最有效、最快速的Debug方式。

  4. 重写一遍
    如果你发现无论如何也找不到BUG,而且代码只是复杂,本身不是很长,直接重写代码吧!

52、引用和指针有何区别

  1. 指针是一个对象,而引用仅是一个对象的别名
  2. 引用使用时无需解引用,指针需要
  3. 引用只能在定义时初始化一次,而指针可变
  4. 引用不能为空,指针可以为空
  5. 有多级指针没有多级引用
  6. 不会为引用变量开辟内存空间,它和它引用的变量共用一块内存空间,指针会开辟内存空间
  7. 引用自加改变引用值的内容,指针自加改变指针的指向
  8. sizeof含义不同,引用结果为引用类型的大小,指针始终是地址空间所占大小
  9. 引用比指针使用起来相对更安全

53、什么情况下使用虚函数? 和纯虚函数有什么区别? 虚析构函数的作用是什么?

虚函数的主要作用是"运行时多态"。虚析构函数的作用在于使用delete删除一个对象时,能确保析构函数被正确的执行。区别:

  1. 虚函数和纯虚函数可以定义在固一个类(class)中,含有纯虚函数的类被称为抽象类(abstractclass),而只含有虚函数的类(class)不能被称为抽象类(abstract class)。

  2. 虚函数可以被直接使用,也可以被子类(sub class)重载以后以多态的形式调用,而纯虚函数必须在子类(sub class)中实现该函数才可以使用,因为纯虚函数在基类(base class)只有声明而没有定义。

  3. 虚函数和纯虚函数都可以在子类(sub class)中被重载,以多态的形式被调用。

  4. 虚函数和纯虚函数通常存在于抽象基类(abstract base class -ABC)之中,被继承的子类重载,目的是提供一个统一的接口

  5. 虚函数的定义形式:virtual {method body}
    纯虚函数的定义形式: virtual { }= 0;
    虚函数和纯虚函数的定义中不能有static标识符,原因很简单,被static修饰的函数在编译时候要求前期bind,然而虚函数却是动态绑定(run-time bind),而且被两者修饰的函数生命周期(life recycle)也不一样

  6. 虚函数必须实现,如果不实现,编译器将报错。

  7. 对于虚函数来说,父类和子类都有各自的版本。由多态方式调用的时候动态绑定。

  8. 实现了纯虚函数的子类,该纯虚函数在子类中就编程了虚函数,子类的子类即孙子类可以覆盖该虚函数,由多态方式调用的时候动态绑定。

  9. 虚函数是C++中用于实现多态(polymorphism)的机制。核心理念就是通过基类访问派生类定义的函数。

  10. 多态性指相同对象收到不同消息或不同对象收到相同消息时产生不同的实现动作。C++支持两种多态性∶编译时多态性,运行时多态性。

    • a.编译时多态性:通过重载函数实现
    • b.运行时多态性:通过虚函数实现.
  11. 如果一个类中含有纯虚函数,那么任何试图对该类进行实例化的语句都将导致错误的产生,因为抽象基类(ABC)是不能被直接调用的。必须被子类继承重载以后,根据要求调用其子类的方法。

54、对Qt元对象系统了解吗?

Qt对标准的C++进行了扩展,如信号槽、对象属性等。Qt的元对象编译系统MOC是一个预处理器,当Qt读取源文件时检测到类中包含有Q_OBJECT宏时,则会创建一个新的文件(生成路径下的moc开头的文件),将源码转换为C++编译器可以识别的代码写入moc开头的文件,然后C++编译器对其进行编译。 当你的类需要使用Qt的扩展功能时,如信号槽、对象属性等时,则必须使用MOC,反之如果你的类不使用这些功能的时候不要无畏的使用MOC增大源码体积。 使用MOC系统的方法︰

  1. 继承QObject。
  2. 类中添加Q_OBJECT宏。

55、Qt中的MVD了解吗?

Qt的MND包含三个部分Model(模型); View(视图); 代理(Delegate)。Model否则保存数据,View负责展示数据,Delegate负责ltem样式绘制或处理输入。这三部分通过信号槽来进行通信,当Model中数据发生变化时将会发送信号到View,在View中编辑数据时,Delegate负责将编辑状态发送给Model层。基类分别为QAbstractItemModel、QAbstractltemView、QAbstractltemDelegate。Qt中提供了默认实现的MVD类,如QTableWidget、QListWidget、QTreeWidget等.

56、QObject是否是线程安全的

QObject及其所有子类都不是线程安全的(但都是可重入的)。因此,你不能有两个线程同时访问一个QObject对象,除非这个对象的内部数据都已经很好地序列化(例如为每个数据访问加锁)。

57、QObject的线程依附性是否可以改变

调用QObject::moveToThread()函数。该函数会改变一个对象及其所有子对象的线程依附性。

由于QObject本身是线程不安全的,因此moveToThread接口的调用必须在QObject对象所在的线程内调用

58、QFrame与QWidget的区别

QFrame和QWidget都是Qt中的GUI组件,但是它们有一些区别:

  1. 继承关系∶QFrame继承自QWidget,所以QFrame具有QWidget的所有功能。
  2. 功能 :QFrame提供了一个简单的框架 ,可以作为其他控件的容器。 它还可以用来绘制简单的图形,如线条。QWidget没有这样的功能,但是提供了基础的GUI组件功能,如设置尺寸和位置等。
  3. 外观∶QFrame可以有边框和背景颜色,因此外观更加丰富。QWidget只有背景颜色,没有边框。通常,当需要一个简单的框架时使用QFrame当需要基础的GUI组件功能时使用QWidget

59、信号重载了,如何确定连接哪个信号?

采用函数指针确定连接哪个信号。

60、槽函数的参数可以少于信号的参数吗?

  • 槽函数本身参数比信号的少
  • 槽函数可以参数带有默认参数

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

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

相关文章

图文深入理解Oracle Network配置管理(一)

List item 本篇图文深入介绍Oracle Network配置管理。 Oracle Network概述 Oracle Net 服务 Oracle Net 监听程序 <oracle_home>/network/admin/listener.ora <oracle_home>/network/admin/sqlnet.ora建立网络连接 要建立客户机或中间层连接&#xff0c;Oracle…

【C++】C++基础

目录 一. C关键字(C98) 二、C的第一个程序 三、命名空间 3.1.namespace的价值 3.2.namespace的定义 3.2.命名空间使用 总结&#xff1a;在项目当中第一、第二种方法搭配使用&#xff0c;第三种冲突风险非常大&#xff0c;仅适合练习使用。 四、C输入&输出 五、缺省…

DRF笔记

参考资料 http://www.yuan316.com/post/DRF/ 全站最牛逼的DRF&#xff08;Django-restframework&#xff09;&#xff0c;没有之一&#xff01; 零、创建django项目 项目每次处相当于执行命令&#xff1a;django-admin startproject xxx 应用名称处&#xff1a;python manage.…

调用智谱AI,面试小助手Flask简单示例

文章目录 1.接入AI获取API密钥Python代码 2.小助手的实现流程3.Flask应用示例Python文件.pyindex.html运行Flask应用地址栏输入 http://localhost:5000/ 1.接入AI 获取API密钥 在智谱AI的官方网站上注册&#xff0c;右上角点击API密钥&#xff0c;新建并复制一个 API Key&…

奔驰EQS450suv升级增强AR抬头显示HUD案例分享

以下是奔驰 EQS450 SUV 升级增强版 AR 抬头显示的一般改装案例步骤及相关信息&#xff1a; 配件&#xff1a;通常包括显示屏、仪表模块、饰板等。 安装步骤&#xff1a; 1. 拆下中控的仪表。 2. 在仪表上预留位置切割出合适的孔位&#xff0c;用于安装显示器。 3. 将显示器…

【leetcode】 45.跳跃游戏 ||

如果我们「贪心」地进行正向查找&#xff0c;每次找到可到达的最远位置&#xff0c;就可以在线性时间内得到最少的跳跃次数。 例如&#xff0c;对于数组 [2,3,1,2,4,2,3]&#xff0c;初始位置是下标 0&#xff0c;从下标 0 出发&#xff0c;最远可到达下标 2。下标 0 可到达的…

Unity XR 环境检测

需求&#xff1a; 检测环境是XR还是手机 代码&#xff1a; using UnityEngine.XR;public class EnvmentUtility {/// <summary>/// 是否是XR环境/// </summary>/// <returns>如果是XR&#xff0c;返回true&#xff0c;否则false</returns>public sta…

聊聊晶圆厂中的常见口语(1)

知识星球里的学员问&#xff1a;半导体公司的工程师总爱用一些英语代替中文&#xff0c;比如care,show&#xff0c;用这种简单的单词代替中文&#xff0c;能不能给我们总结工程师常用的英语单词&#xff0c;比较口语化的&#xff01; 为什么晶圆厂会用很多英文口语&#xff1f…

CompletableFuture常用方法

一、获得结果和触发计算 1.获取结果 &#xff08;1&#xff09;public T get() public class CompletableFutureAPIDemo{public static void main(String[] args) throws ExecutionException, InterruptedException{CompletableFuture<String> completableFuture Com…

c++进阶之多态讲解

这篇文章和大家一起学习一下c中的多态 多态的概念 多态的概念&#xff1a;通俗来讲&#xff0c;就是多种形态。多态分为编译时多态(静态多态)和运⾏时多态(动态多态)。 什么是静态多态 前⾯讲的函数重载和函数模板&#xff0c;它们传不同类型的参数就可以调用不同的函数&…

vue3学习记录-computed

vue3学习记录-computed 1.为什么要用computed2.使用方法2.1 基本实例2.2 可写计算属性 1.为什么要用computed 写个购物车的案例 <script setup> import { ref, reactive,computed } from "vue" const tableData reactive([{ name: 商品1, price: 10, num: 1…

Labview helper

IMAQ Advanced Setup Learn Geometric Pattern 2 VI 参数说明Curve Extraction Mode (0)指定VI如何识别图像中的曲线。如果您希望VI不对图像中对象的均匀性或图像背景做出任何假设&#xff0c;请将此选项设置为正常。如果您希望VI假定图像中的对象或图像背景由均匀的像素值组成…

《蓝桥杯算法入门》(C/C++、Java、Python三个版本)24年10月出版

推荐&#xff1a;《算法竞赛》&#xff0c;算法竞赛大全书&#xff0c;网购&#xff1a;京东 天猫  当当 文章目录 《蓝桥杯算法入门》内容简介本书读者对象作者简介联系与交流《蓝桥杯算法入门 C/C》版目录 《蓝桥杯算法入门 Java》版目录 《蓝桥杯算法入门 Python》版目录 …

【Python】Uvicorn:Python 异步 ASGI 服务器详解

Uvicorn 是一个为 Python 设计的 ASGI&#xff08;异步服务器网关接口&#xff09;Web 服务器。它填补了 Python 在异步框架中缺乏一个最小化低层次服务器/应用接口的空白。Uvicorn 支持 HTTP/1.1 和 WebSockets&#xff0c;是构建现代异步Web应用的强大工具。 ⭕️宇宙起点 &a…

找到字符串中第一个匹配项的下标(c语言)

1./给你两个字符串 haystack 和 needle &#xff0c;请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标&#xff08;下标从 0 开始&#xff09;。如果 needle 不是 haystack 的一部分&#xff0c;则返回 -1 。 //示例 1&#xff1a; //输入&#xff1a;haystac…

【深度学习】(7)--神经网络之保存最优模型

文章目录 保存最优模型一、两种保存方法1. 保存模型参数2. 保存完整模型 二、迭代模型 总结 保存最优模型 我们在迭代模型训练时&#xff0c;随着次数初始的增多&#xff0c;模型的准确率会逐渐的上升&#xff0c;但是同时也随着迭代次数越来越多&#xff0c;由于模型会开始学…

STM32 软件触发ADC采集

0.91寸OLED屏幕大小的音频频谱&#xff0c;炫酷&#xff01; STM32另一个很少人知道的的功能——时钟监测 晶振与软件的关系&#xff08;深度理解&#xff09; STM32单片机一种另类的IO初始化方法 ADC是一个十分重要的功能&#xff0c;几乎任何一款单片机都会包含这个功能&a…

C++ 游戏开发

C游戏开发 C 是一种高效、灵活且功能强大的编程语言&#xff0c;因其性能和控制能力而在游戏开发中被广泛应用。许多著名的游戏引擎&#xff0c;如 Unreal Engine、CryEngine 和 Godot 等&#xff0c;都依赖于 C 进行核心开发。本文将详细介绍 C 在游戏开发中的应用&#xff0…

网页钓鱼---钓鱼网页的制作与危害上线

免责声明: 本文仅供了解攻击方攻击手法反制使用&#xff0c;切勿用于非法用途 前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 基础能力要求 如果仅仅造个页面的话&#xff0c;不需要什么基础。但是如果想要让这个钓鱼页面能够真正实现攻击&#xff0c;得要求制…

Android 简单实现联系人列表+字母索引联动效果

效果如上图。 Main Ideas 左右两个列表左列表展示人员数据&#xff0c;含有姓氏首字母的 header item右列表是一个全由姓氏首字母组成的索引列表&#xff0c;点击某个item&#xff0c;展示一个气泡组件(它会自动延时关闭)&#xff0c; 左列表滚动并显示与点击的索引列表item …