
C/C++
IT1995
每周个人笔记分享,欢迎广大网友查阅!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Qt6笔记-对Qt6中对CMakeLists.txt的解析
下面对CMakeLists.txt进行次理解。首先,新建Qt Console Application项目。下面对上述内容进行解析,都来自于文档。原创 2025-04-21 10:09:30 · 330 阅读 · 0 评论 -
Qt6文档阅读笔记-RESTful API Server解析
上例中,route指定GET方法,以JSON数组的形式返回当前提供的页码的数据。其中QHttpServer::route()中使用QHttpServerRequest::Method::Get枚举类型,指明这个route为GET方法。上例中,route接收POST方法,新增一个实例,并且返回新增的实例。此请求必须被认证,认证的token需要放到请求的head中,其中token为调用服务端api/login和api/register返回的数据。上面的代码通过请求中的ID参数,获取list实例中单独的那条。原创 2025-04-21 10:06:43 · 562 阅读 · 0 评论 -
CMake文档阅读笔记-Simple “Hello World“ Project
首先创建一个main.cpp文件,包含一个main函数,并且创建CMakeLists.txt文件。CMakeLists.txt文件的作用是指导CMake在当前操作系统编译C++程序。① cmake_minimum_required(VERSION 2.4):设置了当前脚本需要的最小的CMake版本。③ add_executable(app main.cpp):结合main.cpp文件构建app程序。② project(hello_word):开始创建一个新的CMake项目。这种方式会使得目录更加的干净。原创 2025-04-14 08:57:48 · 195 阅读 · 0 评论 -
Qt6文档阅读笔记-Simple Http Server解析
上述代码中,使用addAfterRequestHandler()函数,使得QHttpServer中的QHttpServerResponse对象在route()之后被处理。上面代码展示了,如果在reponse中添加响应头。此例展示了如何使用QHttpServer类建立服务端。服务端通过QTcpServer的bind()函数监听tcp端口,并且使用route()函数增加不同URL的处理。上述代码中,使用QSslConfiguration类为QHttpServer进行HTTPS相关的SSL配置。原创 2025-04-14 08:53:32 · 519 阅读 · 0 评论 -
C++笔记-关于LNK2019和LNK2001的解决思路(2024-12-03)
② 写代码应该满足面向对象基本原则,至少要写成高内聚低耦合,一样的功能要抽出来放一起,为什么会出现2个同样的文件名(不在同一目录)并且里面还及其相似。工作这么多年了,还在记录LNK2019和LNK2001这个感觉有点菜了,但这次一定要记录下这个问题,因为感觉很具有代表性。有两个同名的.h文件,不在同一个目录,里面的内容还特别的像,刚好这个项目的include都包含了这2个目录。① include一般是引用第三方库时,才用的,自己include自己,这个感觉太奇怪了。并且调用时,需要using。原创 2025-04-07 08:56:12 · 356 阅读 · 0 评论 -
50个C++经典面试题(41~50)
无数据类型,但void指针存储的是地址,它可以转换为任意类型。50个C++经典面试题(41~50)🤖✨ 想获取更多有趣的IT知识吗?🤖✨📱💡欢迎关注我们的微信公众号“IT先锋社”!📱💡🔍🌟这里有最新的科技动态和实用技巧等你来探索!🔍🌟🚀🎉快来一起加入我们的IT大家庭吧!🚀🎉。原创 2025-03-03 08:50:38 · 1112 阅读 · 0 评论 -
50个C++经典面试题(31~40)
在class中,普通成员变量加上static标签后,就会编程静态成员变量。静态成员变量在程序中的main函数之前就会被创建,并在创建类的第一个对象时初始化为0。它只对已定义的类可见,作用域是终身的。静态成员函数可以用于方法静态成员变量或者其他静态函数,定义时需要带上static标签。原创 2025-02-24 08:40:47 · 1234 阅读 · 0 评论 -
50个C++经典面试题(21~30)
虚继承是一种孙子类从最基本类继承时只保留一份数据的技术。主要解决是菱形继承的问题,阻止多继承时,继承下来重复的成员变量和方法。当父类指针指向子类对象,并要进行析构时,使用虚析构函数技术会调用到子类的析构函数,从而释放内存。虚析构函数的调用顺序:首先调用派生类的析构函数,再调用父类的析构函数。这里有一个建议,敲代码时,我们自定义的所有类的析构函数都写成虚析构函数。具体为什么呢?大家应该能猜到。原创 2025-02-17 08:39:06 · 733 阅读 · 0 评论 -
50个C++经典面试题(11~20)
派生类从父类中获得的属性和特征。简单说就是在不改变的父类的情况下,通过继承,在派生类中进行功能的扩展。原创 2025-02-10 08:48:13 · 1288 阅读 · 0 评论 -
50个C++经典面试题(01~10)
C++中引用的作用是为某一变量创建一个可供代替的别名,引用可作为变量的符号,不需要其他的语法,就能直接进行访问。对应的完整代码是“usingnamespacestd”,写此代码的目的是告知编译器,后面加载的函数或变量等都从std中加载。C++是一门面向对象语言,它的存在的目的是为了克服C语言的短板。不支持OOPs相关的概念,如封装,继承,多态,抽象,类,对象都不支持。多态是函数重载的一个例子,分配类的对象可以被不同类使用和调用。多范式语言,可以安装不同的范式编写程序的逻辑、结构、过程。原创 2025-01-20 08:36:59 · 1513 阅读 · 0 评论 -
为什么“using namespace std”在C++程序中非常重要
std的全称为standard,标准的意思,是C++中最基本的库,里面包含了函数,类,以及各种声明,比如cout,cin,endl等。当“using namespace n1”放到main()函数中时,调用除了fun()和x以外的函数和变量时,会在编译时发生报错。使用“using namespace std”告知编译器,从std命名空间识别代码中的各种‘标识’。如果不使用“using namespace std”就必须使用最开始提到的与解析符。下面的代码使用不同的命名空间定义和声明同名的函数和变量。原创 2025-01-06 08:29:13 · 1322 阅读 · 0 评论 -
C++趣味程序-3种方法判断数据的奇偶
此时可以与1进行AND按位运算,按位运算的逻辑是指,将1转换为二进制0001后,2个数据进行按位AND运算。如果这个数据是偶数,那么他的最低位【Least Significant Bit(LSB)】一定是0。如果这个数据是奇数,那么他的最低位【Least Significant Bit(LSB)】一定是1。如果这个数据是偶数,那么他的最低位【Least Significant Bit(LSB)】一定是0。如果这个数据是奇数,那么他的最低位【Least Significant Bit(LSB)】一定是1。原创 2025-01-03 08:58:30 · 1935 阅读 · 0 评论 -
C++趣味程序-数字反转
数字反转的是指给定一串数字,将左边第一位(最高位)的数字反转到最右边第一位(最低位),将左边第二位(次高位)的数字反转到最右边第二位(次低位)。首先,原始(未反转)的数据存储在num变量中,将要反转(处理后)的数据存储在rev_num中。给定的数据为12548,通过反转后的数据为84521。给定的数据为12345,通过反转后的数据为54321。🔍🌟这里有最新的科技动态和实用技巧等你来探索!📱💡欢迎关注我们的微信公众号“IT先锋社”!🤖✨ 想获取更多有趣的IT知识吗?🚀🎉快来一起加入我们的IT大家庭吧!原创 2025-01-03 08:40:34 · 1281 阅读 · 0 评论 -
C++趣味程序-判断是否为Leap Year
C++趣味程序-判断是否为Leap Year\x0d\x0a\x0d\x0aLeap Year:中文翻译为闰年,在通常的日历中,2月只有28天,但每四年一次的闰年中,2月会有一个额外的日期,即29日,这就像是在日历中跳了一天。Leap Year:中文翻译为闰年,在通常的日历中,2月只有28天,但每四年一次的闰年中,2月会有一个额外的日期,即29日,这就像是在日历中跳了一天。满足下面2个条件中的1项,即可判断是Leap Year。给出的年是4的倍数,但不是100的倍数;给出的年是400的倍数;原创 2024-12-30 14:00:58 · 630 阅读 · 0 评论 -
Qt笔记-Qt Creator开发环境搭建
说句真实的,VS开发工具开发纯C/C++的项目还是十分方便的,但如果是Qt项目,QtCreator感觉还是略胜一筹。我这边以前vs2012他们都是基于x86_64开发的,所有的库和其他的程序都是x86_64的,所以这里得用xx86_64的。这里QtCreator开发环境算是完成了一半了,程序能正常编译运行了,但不能下断点调试,下面来解决断点调试问题。下载后建议进行在线安装,只需要勾选Debugging Tools for Windows,然后点击安装,会自动进行安装下载。此时断点调试就正常了。原创 2024-12-23 08:31:33 · 1525 阅读 · 0 评论 -
C++|Linux笔记-对nm命令的初步认识(2024-10-11)
nm 命令是一个在 Unix 和类 Unix 系统中使用的工具,用于列出目标文件(对象文件)中的符号信息。它通常用于调试和分析程序,帮助开发者理解程序中的符号(如函数和变量)的信息。这个命令用于列出对象文件、可执行文件或库文件中的符号信息。• 对于逆向工程或安全分析,利用 nm 可以获取二进制文件中的符号信息,帮助分析其功能和结构。• 对于共享库或静态库,可以使用 nm 查看其导出和导入的符号,了解库的接口和依赖关系。• 通过查看未定义或未使用的符号,可以识别出可能冗余的代码,进行优化和清理。原创 2024-12-16 08:27:55 · 613 阅读 · 0 评论 -
Qt笔记-获取HTTP的POST请求提交的数据时需要注意的地方(2024-09-02)
这里就是编码有问题,http中body的数据长度和http头的Content-Length不一样。特别是前端提交的数据带中文时。在大多数情况下,前端提交的数据都是utf8编码,而Qt的编码规则默认情况下操作系或登陆的用户有关。所以在Qt5下需要特别的指定(Qt4也需要,只是比Qt5麻烦下,多几行代码)。这里总结下来还是编码的问题。原创 2024-11-25 15:52:45 · 660 阅读 · 0 评论 -
C++笔记-对“继承”的进一步认识(2024-08-15)
这里就有点看开始奇怪了,这里的base变量是用父类new的,第二个打印只是强转成了A*,然后成功打印了A类的print,我感觉应该会运行时报错或者打印Base的print也能理解。加了virtual就好理解了,新加了个虚表的概念,调用print,就直接从虚表中拿函数地址,因为没有new A,所以虚表没有被刷掉,调用的还是Base类的print。在C++中,如果发现有了继承关系,那么注定会有,父类指针指向子类对象。类的设计中,如果基类有虚函数,通常将析构函数声明为虚的,以确保派生类的析构函数能够被正确调用。原创 2024-11-18 08:37:51 · 466 阅读 · 0 评论 -
C++笔记-解决gdb调试时不显示出错行的问题
在编译时添加-g,可以理解成-gdb,让gdb调(其实好像不是这个含义,但我是这么理解的)重新make后,core dumped后进行gdb调试,就能显示对应的行了。其实这个也不算是问题,原因是so或可执行程序是release版本。只要将其编译成debug版本就可以了。如果是Qt的程序可直接修改.pro文件。原创 2024-11-04 14:22:55 · 409 阅读 · 0 评论 -
C++笔记-对“继承”的进一步认识(2024-08-15)
这里就有点看开始奇怪了,这里的base变量是用父类new的,第二个打印只是强转成了A*,然后成功打印了A类的print,我感觉应该会运行时报错或者打印Base的print也能理解。加了virtual就好理解了,新加了个虚表的概念,调用print,就直接从虚表中拿函数地址,因为没有new A,所以虚表没有被刷掉,调用的还是Base类的print。在C++中,如果发现有了继承关系,那么注定会有,父类指针指向子类对象。类的设计中,如果基类有虚函数,通常将析构函数声明为虚的,以确保派生类的析构函数能够被正确调用。原创 2024-10-23 13:58:42 · 454 阅读 · 0 评论 -
C++笔记-UTF8和UTF8-dom的区别
今天遇到的就是这个问题,我用notepad将ascii转utf8后,发现以前的c++解析程序core dumped了,定位到了读首行时,cout输出正常,但string[0],这种首行下标访问就不正常了,转ascii为原创 2024-10-14 13:55:37 · 725 阅读 · 0 评论 -
C++笔记-sstream的使用(字符串转其他类型,读取文件时用得多)
在 C++ 中,std::stringstream 类可以用来进行字符串流的输入输出,将字符串和其他类型的数据进行转换。原创 2024-08-12 08:39:17 · 541 阅读 · 0 评论 -
Linux笔记-对.a静态库的进一步理解(2024-04-09)
问:遇到问题应该及早发现才算是好的方法吧,.a静态库需要其他程序链接他时才会发现问题,那.a库的优势在哪呢?答:是的,一般来说,及早发现问题是好的编程实践。静态库(.a文件)和动态库(.so文件)各有其优势,针对不同的应用场景选择合适的库有助于提高开发效率和程序可维护性:静态库(.a):优势:独立性: 静态库可以将所有依赖项(包括第三方库)打包在一起,使得程序在不同环境中运行更为可靠。可移植性: 可以将静态库嵌入到可执行文件中,方便在没有动态库的环境中运行。原创 2024-07-22 08:41:34 · 1181 阅读 · 0 评论 -
C++笔记-makefile添加第三方.h和.cpp及添加.h和lib库模板
【代码】C++笔记-makefile添加第三方.h和.cpp及添加.h和lib库模板。原创 2024-05-06 10:51:23 · 710 阅读 · 0 评论 -
Qt笔记-解决VS中.h文件新增Q_OBJECT或继承QObject后编译报错问题
原因是.h中某类添加Q_OBJECT宏以继承QObject后就需要使用Qt的moc工具生成对应的moc_xxx.cpp文件。将此文件放到vs工程的generated files目录中,如果报#include找不到,修改下对应的路径即可。所以VS报错,就是缺少这个。随后就能编译通过了。原创 2024-04-29 09:43:35 · 1023 阅读 · 0 评论 -
Qt笔记-解决子控制大小获取不正确(width和height)需要重制窗体后,才能获得正确的值
由于延迟为0,这意味着回调函数将在事件循环的下一次迭代中被执行,此时子控件的尺寸应该已经被正确计算和应用。在上面的示例中,我们将延迟参数设置为0,这样可以确保在子控件的布局和约束已经应用后,通过QTimer触发的回调函数才会执行获取子控件尺寸的操作,从而获得正确的宽度和高度值。在Qt中,子控件的宽度和高度在构造后并不准确,而只有在调整窗口大小后才正确,这可能是因为子控件的布局或者约束尚未完全计算和应用。通过将获取子控件尺寸的代码延迟到事件循环的下一次迭代中,可以确保在布局和约束已经应用后获取到正确的尺寸。原创 2024-04-22 08:34:35 · 1036 阅读 · 0 评论 -
Qt笔记-解决Qt程序连不上数据库MySQL数据库(重编libqsqlmysql.so)
Qt的QSqlDatabase使用的是libqsqlmysql.so,而libqsqlmysql.so其实是对libmysqlclient.so的封装。差不多就可以知道了,无mysql客户端驱动,在机器上装下mysql-client。如果发现是libmysqlclient.so => not found。将里面的pro文件修改添加和LIBS和INCLUDEPATH。造成这样的问题大多数是libqsqlmysql.so有问题。再重编下libqsqlmysql.so,即可。再次运行程序就可以了。原创 2024-04-01 08:11:14 · 727 阅读 · 1 评论 -
C/C++笔记-make编译时需要注意的问题(编译可执行程序时链接的so出现未定义的引用)
一般开源的so兼容性相当好,基本上不会出现上面的问题,自定义的so很有可能会出现。所以解决办法,还得去看makefile文件,和报错的地方,多少个参数,并且是在哪个地方定义的.原创 2024-03-25 08:44:25 · 654 阅读 · 0 评论 -
C/C++笔记-使用mysql-connector-c连接mysql数据库
libmysql.lib 是 Windows 平台上使用的库文件,它是使用 Visual Studio 编译器编译的。mysqlclient.lib 是 Linux 平台上使用的库文件,它是使用 GCC 编译器编译的。libmysql.lib 和 mysqlclient.lib 都是 MySQL C Connector 的库文件,但它们针对不同的操作系统和编译器。解压后lib有2个,一个是libmysql.lib一个是mysqlclient.lib。原创 2024-01-29 10:56:27 · 1737 阅读 · 1 评论 -
Qt文档阅读笔记-Fetch More Example解析
Fetch More Example这个例子说明了如何在视图模型上添加记录。这个例子由一个对话框组成,在Directory的输入框中,可输入路径信息。应用程序会载入路径信息的文件信息等。不需要按回车键就能搜索。当有大量数据时,需要对视图模型进行批量增加。此案例,实现了FileListModel类,此类包含了一个视图模型,这个视图模型获取路径下的文件。下面来看下FileListModel的代码。原创 2023-11-13 08:49:51 · 1874 阅读 · 0 评论 -
C++笔记-RTTR编译&安装&简单使用
需不需要make install就看你们自己了,我没有install,后面的测试程序直接拷贝编译好的so进行处理。这里我使用了Qt的pro管理项目,qmake写起来比makefile简单点。这里以Linux为例,我使用的机器的gcc版本是4.9.2。首先在官网将rttr的0.9.5版本下载下来。使用的RTTR的版本是0.9.5。原创 2023-10-30 08:45:15 · 3693 阅读 · 0 评论 -
Qt笔记-自定义QSet,QHash的Key
②qHash(const QString &, uint):生成hash的,同样要传入唯一标识的,上面的例子是用name生成的hash再和出生时间异或。①operator==:这里要注意,判断2个自定义对象是否相等,如果有唯一标识字段,比如主键,就可以直接用那个,如果没有,就在结构体中想想,拿些字段组合可以唯一标识这个结构体;构造2个内联函数,方便QHash去对比一个是operator == ,一个是qHash(const QString &, uint);在此我直接总结下,方便查阅。原创 2023-06-26 08:44:08 · 3638 阅读 · 0 评论 -
Qt笔记-pro文件新增宏、if、else、编译后的shell命令(写so或dll时提高开发效率)
背景是这样的,目标是要写个dll,so,这种动态链接库,但如果直接写这玩意的话,调试起来很麻烦,需要用其他程序去加载他,特别是在linux上,没界面的那种,开发效率简直慢了不知道多少。从中LIBXXX_LIBRARY是在pro文件中定义的,当有时就加载libXXX_global.h,没有就说明是exe,就。②代码中通过pro中定义的宏,对Q_DECL_EXPORT和Q_DECL_IMPORT进行设置,设置到要导出的类上。最后来看下关键的类,也就是导出的类,提供给三方用的。③#:pro文件中“#”代表注释;原创 2023-05-31 18:02:50 · 4582 阅读 · 0 评论 -
C/C++笔记-使用Qt的UI文件时make流程
Wl, -rpath:①用于编译时指定间接引用的库位置,作用同-Wl,-rpath-link;从中发现了个有意思的,以前都以为moc_xxx.cpp文件是通过对于的.h和.cpp使用moc联合生成的,现在发现他仅仅是使用对应的.h文件生成。这里就很明确的发现了,在编译阶段,使用了Q_OBJECT和继承了QObject的类会编译时会生成2个object文件,分别是原始object和带moc的object文件。-O2:optimization优化,比-O高一级的优化,编译优化,具体优化哪些内容,在此不说明;原创 2023-05-15 11:04:35 · 2523 阅读 · 0 评论 -
C/C++笔记-构造makefile使用MOC程序及编译,链接
②:$(PROGRAM): $(OBJECTS):这个会先找在文件中找main.o Test.o moc_Test.o,如果找不到就在makefile下,看有没有对应的标签。背景是这样的构造一个Test类,使用了Q_OBJECT宏,和继承了QObject,也就是元对象,这时,makefile需要如何写。每一条命令在前一篇文章中已经说明了。原创 2023-05-08 21:17:02 · 3853 阅读 · 0 评论 -
C/C++笔记-分析带有Q_OBJECT继承QObject的类make流程
Wl, -rpath:①用于编译时指定间接引用的库位置,作用同-Wl,-rpath-link;从中发现了个有意思的,以前都以为moc_xxx.cpp文件是通过对于的.h和.cpp使用moc联合生成的,现在发现他仅仅是使用对应的.h文件生成。这里就很明确的发现了,在编译阶段,使用了Q_OBJECT和继承了QObject的类会编译时会生成2个object文件,分别是原始object和带moc的object文件。-O2:optimization优化,比-O高一级的优化,编译优化,具体优化哪些内容,在此不说明;原创 2023-05-03 14:49:49 · 3979 阅读 · 1 评论 -
C/C++笔记-写一个Makefile并链接QtCore库使用QString,QDebug
Wl, -rpath:①用于编译时指定间接引用的库位置,作用同-Wl,-rpath-link;②用于运行时指定所有引用库的位置,作用同修改环境变量(LD_LIBRARY_PATH),并且库路径引用优先级高于LD_LIBRARY_PATH;③$原创 2023-04-23 14:52:20 · 2463 阅读 · 2 评论 -
C/C++笔记-记录一次对qmake生成的Makefile的分析(2023-02-07)
Wl, -rpath:①用于编译时指定间接引用的库位置,作用同-Wl,-rpath-link;②用于运行时指定所有引用库的位置,作用同修改环境变量(LD_LIBRARY_PATH),并且库路径引用优先级高于LD_LIBRARY_PATH;-fPIC:用于生成位置无关的代码(Position-Independent-Code);-DQT_CORE_LIB:这个没查到,但看名称差不多能猜到是QT核心库的调试;-D_REENTRANT:它会对部分函数重新定义它们的可安全重入的版本;-L:Link链接路径;原创 2023-04-10 21:47:19 · 2456 阅读 · 0 评论 -
C/C++文档阅读笔记-A Simple Makefile Tutorial解析
上面定义了CC和CFLAGS两个宏,目的是方便makefile后面的脚本使用,CC=gcc并且后面的$(CC) -o hellomake hellomake.o hellofunc.o说明这个CC=gcc是使用C编译器,CFLAGS列出来标签的list, -I . 编译成.o文件需要依赖当前目录的.h文件。没用makefile文件,程序员对代码进行修改后,就需要不停按键盘的↑键去找对应的命令进行编译,如果新增了一个.c文件,还需要修改对应的命令。(可以用“\”来转义,以“\%”来表示真实含义的“%”字符)原创 2023-03-30 09:10:46 · 3368 阅读 · 5 评论 -
Qt文档阅读笔记-Tetrix Example解析
Q_OBJECTpublic:private:在类的private中有几个成员变量,包括前端画线,各种挂机和按钮,按钮有开始游戏,暂停当前游戏和退出。TetrixWindow继承了QWidget,但QWidget父类不能构造自己想创建的结构,所以,一般用上面这种方式创建程序员想要的界面。TetrixPiece类为游戏区域创建俄罗斯方块,包括形状、位置、方块在游戏区域的位置范围。原创 2023-03-30 09:04:53 · 2395 阅读 · 0 评论