C++与QT
文章平均质量分 57
C++基础语法 以及 QT的一些基础使用
小何在线
关注我就完事了
展开
-
C++ 内存泄漏讲解
一、含义内存泄漏(memory leak)是指由于疏忽或错误造成了程序未能释放掉不再使用的内存的情况。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,失去了对该段内存的控制,因而造成了内存的浪费。二、后果最难捉摸也最难检测到的错误之一是内存泄漏,即未能正确释放以前分配的内存的 bug。 只发生一次的小的内存泄漏可能不会被注意,但泄漏大量内存的程序或泄漏日益增多的程序可能会表现出各种征兆:从性能不良(并且逐渐降低)到内存完全用尽。 更糟的是,泄漏的程序可能会用掉太多内存,以致原创 2020-10-14 18:04:12 · 325 阅读 · 0 评论 -
引用与指针的区别
引用与指针有什么区别?指针和引用都是地址的概念,指针指向一块内存,它的内容是所指内存的地址;引用是某块内存的别名。程序为指针变量分配内存区域,而不为引用分配内存区域。指针使用时要在前加 * ,引用可以直接使用。引用在定义时就被初始化,之后无法改变;指针可以发生改变。 即引用的对象不能改变,指针的对象可以改变。没有空引用,但有空指针。这使得使用引用的代码效率比使用指针的更高。因为在使用引用之前不需要测试它的合法性。相反,指针则应该总是被测试,防止其为空。对引用使用“sizeof”得到的是变量的大小原创 2021-11-15 21:09:14 · 127 阅读 · 0 评论 -
C++ explicit 关键字
一、隐式类型转换 (构造函数的隐式调用)#include <iostream>using namespace std;class Point {public: int x, y; Point(int x = 0, int y = 0) : x(x), y(y) {}};void displayPoint(const Point& p){ cout << "(" << p.x << ","原创 2021-11-28 22:11:02 · 515 阅读 · 0 评论 -
lambda表达式
#简介lambda 表达式是 C++11 最重要也最常用的一个特性之一,C# 3.5 和 Java 8 中就引入了 lambda 表达式。lambda 来源于函数式编程的概念,也是现代编程语言的一个特点。C++11 这次终于把 lambda 加进来了。##优点:声明式编程风格:就地匿名定义目标函数或函数对象,不需要额外写一个命名函数或者函数对象。以更直接的方式去写程序,好的可读性和可维护性。简洁:不需要额外再写一个函数或者函数对象,避免了代码膨胀和功能分散,让开发者更加集中精力在手边的问题,同时也获原创 2020-08-06 18:51:10 · 260 阅读 · 0 评论 -
匿名命名空间和 static 声明的区别
一、本质区别static关键字声 明的符号有内部链接属性,而匿名命名空间中声明的符号有外部链接属性。二、staticC和C++中每一个源文件(.c, .cpp)都可以单独编译成一个目标文件(.o),之后通过链接器把这些目标文件链接起来,形成最后的可执行文件或者库文件。也就是说某个源文件 a.cpp中用到的符号s(函数,全局变量等)可能是在另一个源文件b.cpp中定义的, 在 a.cpp中只要给出相应的声明就可以了。为了让链接器可以找到符号s的定义,b.o 必须提供它定义的所有可链接的符号。b.o只会提原创 2021-11-14 21:30:41 · 1388 阅读 · 0 评论 -
C++:【练习题】类的继承与多态性
练习1:请编写程序完成如下设计学生类,数据成员包括学号(公有)、姓名(保护)、年龄(私有)、学生数(静态)。学生数用来统计构造出来的学生对象数量课代表类,继承自学生类,数据包括负责课程编号(公有)、课程评分(公有)要求使用构造初始化符表“:”的形式进行构造,每个类又相关数据的输出显示函数在主函数中构造对象并输出显示相关数据解题思路:构建学生类,创建各类数据成员创建课代表类继承学生类初始化静态成员变量构造对象进行调试#include<iostream>using names原创 2021-11-21 23:57:27 · 1643 阅读 · 2 评论 -
重载new,delete运算符
new,delete在c++中也被归为运算符,所以可以重载它们。new的行为:先开辟内存空间 再调用类的构造函数开辟内存空间的部分,可以被重载。delete的行为:先调用类的析构函数再释放内存空间释放内存空间的部分,可以被重载。为什么要要重载它们?有时需要实现内存池的时候需要重载它们。频繁的new和delete对象,会造成内存碎片,内存不足等问题,影响程序的正常执行,所以一次开辟一个适当大的空间,每次需要对象的时候,不再需要去开辟内存空间,只需要调用构造函数(使用placemen原创 2021-11-24 23:06:54 · 892 阅读 · 0 评论 -
QT常见BUG
1、出现问题如下:源码:#ifndef MYLISTWIDGETITEM_H#define MYLISTWIDGETITEM_H#include <QObject>#include <QListWidget>#include <QListWidgetItem>class MyListWidgetItem : public QListWidgetItem{ Q_OBJECTpublic: explicit MyListWidgetIt原创 2021-03-23 15:04:50 · 465 阅读 · 0 评论 -
NSIS制作安装包软件
一、简介NSIS 是“Nullsoft 脚本安装系统”(Nullsoft Scriptable Installation System) 的缩写,它是一个Open Source的Windows系统下安装程序制作程序。它提供了安装、卸载、系统设置、文件解压缩等功能。NSIS通过它的脚本语言来描述安装程序的行为和逻辑的,因为它基于脚本文件,所以你可以完全控制你的安装程序的每个部分。它的脚本语言支持变量、函数、字串处理,就像是一个普通的程序语言——但它是为安装程序这类应用所设计的。二、操作步骤1、首先利用Q原创 2021-03-08 09:37:18 · 887 阅读 · 0 评论 -
QML布局
一、简介QML是Qt推出的Qt Quick技术的一部分,它可以快速便捷实现流畅的UI。QT Quick布局一般有四种形式,①. 绝对坐标:x、y、z、width、height、②. 锚(anchors) 布局③. 定位器(Row、Column、Grid、Flow)④. 布局管理器(GridLayout、RowLayout、ColumnLayout)。二、绝对坐标布局import QtQuick 2.9import QtQuick.Window 2.2import QtQuick.Cont原创 2021-01-06 12:05:53 · 5810 阅读 · 0 评论 -
如何在QT中使用正则表达式
一、 简介我们在上一篇博客中讲解了正则表达式语法。但是还有很多疑问,正则表达式如何使用呢?还有就是,正则表达式主要是有哪些应用呢?二、应用场景在项目中经常会遇到对字符串进行操作的情况,我们可以直接使用QString的一些函数,但QT提供了一个更加强大的类——QRegExp,使用正则表达式来操作字符串。正则表达式有许多方便应用,比如:检验游戏玩家名字是否符合格式、取得一串字符串中所有子数列 这种子数列是一个小写字母加一个大写字母、对输入框LineEdit中的输入内容加以限制 比如只能输入数字 并且最多5原创 2021-01-04 00:08:16 · 12584 阅读 · 1 评论 -
正则表达式语法
一、简介正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符")。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。正则表达式是繁琐的,但它是强大的,学会之后的应用会让你除了提高效率外,会给你带来绝对的成就感。只要认真阅读本教程,加上应用的时候进行一定的参考,掌握正则表达式不是问题。许多程序设计语言都支持利用正则表达式进行字符串操作。二、正则表达式语法有关正则表达式详细语法可查看 菜鸟教程,这里就原创 2021-01-03 11:43:04 · 424 阅读 · 0 评论 -
QT中JSON解析
一、简介JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。有关更多解释,可以去JSON官网查看。二、JSON类介绍在Qt库中,为JSON的相关操作提供了完整的类支持,包括QJsonValu原创 2020-11-13 23:45:40 · 4301 阅读 · 0 评论 -
QT程序打包
一、 打包前的准备1、 确保项目为 release 版本开发人员在开发过程中往往会使用 debug 版本打印调试信息, 因此在打包前将该项目变更为 release 版本, 然后编译:二、 使用工具1、官方开发环境里自带的工具:windeployqt.exe在电脑的左下角中,打开系统菜单,找到如图所示的软件:2、 从网上下载 Enigma Virtual Box 打包工具,该工具可在我的博客中下载三、 工具使用说明1、windeployqt.exe1)项目在 release 版本下编原创 2020-10-20 10:20:26 · 543 阅读 · 0 评论 -
关于QT调试信息(printf、qDebug)
一、简介在我们日常开发QT程序中,很多时候需要使用printf、qDebug函数调试信息,查看当前程序在哪一步出错。二、查看方法1、第一种我们使用printf函数或者qDebug()函数 输出调试信息,直接显示在下方的输出信息窗口,如图:这最简单的方式,不过本人觉得,调试信息在下方不方便查看或者调试。2、第二种使用console控制台显示信息,不过需要进行简单配置:第一步:项目–运行 界面下勾选Run in terminal第二步:在项目的pro文件中添加:CONFIG +=cons原创 2020-10-19 15:48:38 · 6480 阅读 · 0 评论 -
QT 内存泄漏检测工具VLD 使用和安装
一、简介灵活自由是C/C++语言的一大特色,而这也为C/C++程序员出了一个难题。当程序越来越复杂时,内存的管理也会变得越加复杂,稍有不慎就会出现内存问题。内存泄漏是最常见的内存问题之一。内存泄漏如果不是很严重,在短时间内对程序不会有太大的影响,这也使得内存泄漏问题有很强的隐蔽性,不容易被发现。然而不管内存泄漏多么轻微,当程序长时间运行时,其破坏力是惊人的,从性能下降到内存耗尽,甚至会影响到其他程序的正常运行。另外内存问题的一个共同特点是,内存问题本身并不会有很明显的现象,当有异常现象出现时已时过境迁,其原创 2020-10-15 17:16:25 · 4101 阅读 · 0 评论