随笔分类 - C++
摘要:inl文件是内联函数的源文件。内联函数通常在C头文件中实现,但是当C头文件中内联函数过多的情况下,我们想使头文件看起来简洁点,能不能像普通函数那样将内联函数声明和函数定义放在头文件和实现文件中呢?当然答案是肯定的,具体做法将是:将内联函数的具体实现放在inl文件中,然后在该头文件末尾使用#inclu
阅读全文
摘要:1. 多线程编程 在进行桌面应用程序开发的时候, 假设应用程序在某些情况下需要处理比较复杂的逻辑, 如果只有一个线程去处理,就会导致窗口卡顿,无法处理用户的相关操作。这种情况下就需要使用多线程,其中一个线程处理窗口事件,其他线程进行逻辑运算,多个线程各司其职,不仅可以提高用户体验还可以提升程序的执行
阅读全文
摘要:1. volatile的作用 volatile 关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改。比如:操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。 声明时语法:volatile int
阅读全文
摘要:1. 堆和栈有什么区别 从定义上:堆是由new和malloc开辟的一块内存,由程序员手动管理,栈是编译器自动管理的内存,存放函数的参数和局部变量。 堆空间因为会有频繁的分配释放操作,会产生内存碎片 堆的生长空间向上,地址越来越大,栈的生长空间向下,地址越来越小 关于c++内存空间的构成,大家可以看我
阅读全文
摘要:1. 前言 我们编写的源代码是人类语言,我们自己能够轻松理解;但是对于计算机硬件(CPU),源代码就是天书,根本无法执行,计算机只能识别某些特定的二进制指令,在程序真正运行之前必须将源代码转换成二进制指令。 所谓的二进制指令,也就是机器码,是 CPU 能够识别的硬件层面的“代码”,简陋的硬件(比如古
阅读全文
摘要:1. static_cast 1.1 static_cast语法 static_cast< new_type >(expression) 备注:new_type为目标数据类型,expression为原始数据类型变量或者表达式。 C风格写法: double scores = 96.5; int n =
阅读全文
摘要:在C++中内存分为5个区,分别是堆、栈、自由存储区、全局/静态存储区和常量存储区 **堆(heap):**分配方式类似于链表;一般由程序员分配和释放,若程序员不释放,OS可能回收。分配方法:malloc、new ;释放方法:free delete **栈(heap):**编译器自动分配释放,存放函数
阅读全文
摘要:1. C++运算符重载介绍 C ++ 中预定义的运算符的操作对象只能是基本数据类型。但实际上,对于许多用户自定义类型(例如类),也需要类似的运算操作。这时就必须在C ++ 中重新定义这些运算符,赋予已有运算符新的功能,使它能够用于特定类型执行特定的操作。运算符重载的实质是函数重载,它提供了C ++
阅读全文
摘要:1. 问题 “iterator”: 类型 从属名称的使用必须以“typename”为前缀 今天将我VS2017 的代码移植到VS2019上面时,产生了上面的错误,产生错误的代码片段如下 vector<vector<T>>::iterator it = r.begin() + row; r.erase
阅读全文
摘要:1. 介绍 在 C++ 中没有垃圾回收机制,必须自己释放分配的内存,否则就会造成内存泄露。解决这个问题最有效的方法是使用智能指针(smart pointer)。智能指针是存储指向动态分配(堆)对象指针的类,用于生存期的控制,能够确保在离开指针所在作用域时,自动地销毁动态分配的对象,防止内存泄露。智能
阅读全文
摘要:1. 前言 这次花了大约4天的时间,去做了这个文本编辑器Plus,这个编辑器主要是为了让我去熟悉一些常用的操作,以及信号槽的使用,我上次做的简易版文本编辑器地址:Qt5实现文本编辑器 2. 主界面展示 界面演示了部分功能 3. 功能介绍 3.1 文件操作功能 新建文件 打开文件 打印文件 打印图片
阅读全文
摘要:1. 功能介绍 老规矩,我们直接上截图 这是主界面 文件菜单界面 编辑菜单界面 设置菜单界面 关于菜单界面 2. 功能演示 设置字体颜色 设置字体大小 点击关于菜单 点击关于Qt菜单 会自动跳转到Qt的官网 点击图片转PDF 打开文件等对话框 3. 代码 我们直接上代码 aboutwidget.h
阅读全文
摘要:最近准备尝试用VS去开发Qt项目,但是我在ui文件中修改的控件,在vs里面找不到,于是上网浏览解决办法,总结如下 1. 保存Ui文件 在拖拽控件之后,Ctrl+S 2. 重新编译ui文件 3. 右键项目,重新扫描解决方案 这样就可以啦,话说真的好麻烦啊,各位大佬们有没有其他更好的解决办法?在评论区说
阅读全文
摘要:因为最近写了一个程序,然后想着能给室友玩耍,就研究了一下如何打包,写这篇博客记录一下 1. 首先获得程序的Release版本 就是点击这个Release,然后构建一遍 2. 进入构建的release文件夹找到对应的exe文件 3. 将这个文件放入单独的文件夹 然后进入windows的控制台 win+
阅读全文
摘要:1. 效果 先看看效果图 这是传输文件完成的界面 客户端 服务端 2. 知识准备 其实文件传输和聊天室十分相似,只不过一个传输的是文字,一个传输的是文件,而这方面的知识,我已经在前面的博客写过了,不了解的同学可以去看一下 C++网络编程 Qt实现网络聊天室(客户端,服务端) 还有多线程相关的知识 Q
阅读全文
摘要:1. 关于为什么关闭线程,释放资源的时候要先quit(),然后wait() quit()函数是用来停止QThread的,但是由于Qt本身是事件循环机制,所以在调用完quit()后,QThread可能还没有完全停止,此时如果执行delete channel,程序就会报错。在执行quit()后,调用wa
阅读全文
摘要:今天遇到了一个错误 详细信息如下 sendfile.cpp:3:39: error: type 'QObject' is not a direct or virtual base of 'SendFile' 在QtCreator中报错 很迷惑,为啥不能这样写 SendFile是我自己定义的一个类 问
阅读全文
摘要:前几天学习了Qt的网络通信,特写这篇博客来记录一下
阅读全文
摘要:昨天学习了一些C++网络编程的一些相关知识,今天回忆复习一下 1. 相关知识 1.1 局域网和广域网 局域网:局域网将一定区域内的各种计算机、外部设备和数据库连接起来形成计算机通信的私有网络。 广域网:又称广域网、外网、公网。是连接不同地区局域网或城域网计算机通信的远程公共网络。 IP(Intern
阅读全文
摘要:本文讲解了Qt中的多线程以及线程池的使用和实例
阅读全文

浙公网安备 33010602011771号