C++
文章平均质量分 84
飞萤乱入帘
这个作者很懒,什么都没留下…
展开
-
C++虚函数表实现详细解析 (附示例)
相信很多人在了解到多态之后,都想要知道其具体的实现原理。其实大家应该都或多或少地知道:`虚函数是通过虚函数表实现的`。但是呢,可能和我之前一样,知道大概是怎样的,但是没有通过代码真正地运行测试。最近我也在网上查看了一番,发现有的文章写得很好,但是代码上面可能欠考虑一点,有的则是没有详细解释。因此本文将使用详细示例来探讨虚函数的实现原理,教你如何通过对象查找虚函数地址并调用。末尾还会分享一些没有用但好玩的技巧。原创 2021-05-15 00:46:30 · 2407 阅读 · 4 评论 -
C++ --- Windows屏幕和窗口截图
最近学习了Windows下的屏幕截图,延伸到窗口截图,其中也遇到了不少的坑,好在最后还是实现了我的目标。顺便封装了一下Win32的api,方便后续使用。原创 2021-04-09 17:59:20 · 8191 阅读 · 3 评论 -
Win下编译安装使用PAHO-MQTT库(C和C++版本)
`Paho-Mqtt`使用多种编程语言实现了MQTT的客户端,本文介绍如何编译生成他的C库和C++库。原创 2021-03-29 10:01:49 · 6963 阅读 · 4 评论 -
GDI+绘制希尔伯特曲线
看分形图形时偶然看到了希尔伯特曲线,因此决定写个程序画着玩。希尔伯特曲线是一种能填充满一个平面正方形的分形曲线(空间填充曲线)。原创 2021-03-15 17:54:55 · 575 阅读 · 0 评论 -
贝塞尔曲线动画C++简单实践
由于用计算机画图大部分时间是操作鼠标来掌握线条的路径,与手绘的感觉和效果有很大的差别。即使是一位精明的画师能轻松绘出各种图形,拿到鼠标想随心所欲的画图也不是一件容易的事。这一点是计算机万万不能代替手工的工作,所以人们只能颇感无奈。使用贝塞尔工具画图很大程度上弥补了这一缺憾。贝塞尔曲线是计算机图形图像造型的基本工具,是图形造型运用得最多的基本线条之一。除此之外,贝塞尔曲线还经常用来做动画,让动画过渡更平滑。本文则记录如何使用贝塞尔曲线定制平滑的动画效果,并使用C++编写了cmd动画和窗口动画示例代码。原创 2021-01-27 13:41:11 · 6035 阅读 · 1 评论 -
C++获取和设置网卡信息(ip、掩码、网关、Dns)
最近需要将网络设置功能集成到软件中,因此找了一些win api进行封装,由此实现对Windows的ip地址、子网掩码、默认网关、Dns等信息的获取和设置。原创 2020-06-11 16:11:36 · 10004 阅读 · 3 评论 -
C++ ---- Win/Linux下连接Mysql
最近项目需要使用到Mysql,以前用的是Qt封装好的数据库操作类,十分简单,这次用在服务器上打算学习下用MysqlConnector来进行数据库的连接和操作。MysqlConnector有JDBC版和XDEVAPI版,Mysql5.7.12后就有`X Plugin`,使用它可以十分方便的完成数据库操作,但因为5.7还有一些小问题,因此直接安装Mysql8并使用MysqlConnector8比较好。原创 2020-03-14 21:23:51 · 588 阅读 · 0 评论 -
C++11异步编程 ---- std::async与std::future的使用和注意事项
std::async是C++11才有的一个异步调用模板,它将异步地运行传入的函数并返回一个std::future。合理地使用,可以更轻松地完成异步操作。std::async是与std::future搭配使用的,但我们一般不直接使用std::future,而是使用对其封装的std::async,基本上可以代替std::thread完成所有任务。原创 2020-02-27 11:37:54 · 3613 阅读 · 0 评论 -
编写VC++日志类(Logger) ---- 方便调试
在写较大型的程序时,往往不好调试,因为打印的日志信息太多,太繁杂,没办法一眼看到比较重要的信息,因此先写一个比较简单的日志类方便进行调试,以后再进行更新。原创 2020-01-27 22:03:59 · 1394 阅读 · 0 评论 -
RapidJson将json转为xml表示
最近使用rapidjson库比较多,rapidjson是一个开源的、高性能的json库,在rapidjson官方教程中,提到 :【rapidjson::Reader以从输入流解析一个Json。当它从流中读取字符时,它会基于Json的语法去分析字符,并向处理器发送事件。】且该库提供了处理器的接口,我们只要对接口进行实现即可实现将json解析到自己想要的格式原创 2020-01-22 11:19:23 · 428 阅读 · 0 评论 -
C++ 学习笔记
学习和工作中经常会遇到一些小问题或者一些技巧性的东西,在此处作一份记录,保持更新。原创 2020-01-22 10:02:12 · 171 阅读 · 0 评论 -
读书笔记 ---- C++中的接口与实现分离
最近在读《Effective C++》,对里面的思想和代码深有感触,因此在此做点记录并加以自己的理解,方便以后查看。本文内容来自`条款31:将文件间的编译依存关系降至最低`。通常我们会在一个类的定义中同时写出声明式和定义式,而使用这样的写法,很可能会导致文件包含的问题,比如Date类,Address类的头文件包含,同时当改变了Person类所依赖的某个类时,会导致Person类重新编译。这样写也没有做到class的接口与实现分离。因此有两种方法可以实现所谓的接口与实现分离,让逻辑更清晰。原创 2019-10-18 14:39:30 · 295 阅读 · 0 评论 -
C++11智能指针学习(unique_ptr、shared_ptr和weak_ptr)
从C++11起,标准库提供了便于使用的、不同且高效的智能指针的实现。这些智能指针几乎是没有bug的,因为在引入标准之前,它们在Boost库中已经开发了很长一段时间。智能指针减少了内存泄漏的可能性,同时,它们被设计为线程安全的。因此有必要学习一下它们的使用,以在资源管理中更好地管理资源,减少内存泄漏的可能。原创 2019-08-12 11:00:21 · 327 阅读 · 0 评论 -
读书笔记 ---- 在operator=中处理"自我赋值"
最近在读《Effective C++》,对里面的思想和代码深有感触,因此在此做点记录并加以自己的理解,方便以后查看。本文内容来自条款11:在operator=中处理"自我赋值"(Handle assignment to self in operator=.)。原创 2019-07-29 20:23:15 · 310 阅读 · 0 评论 -
读书笔记 ---- 让对象独一无二(禁止拷贝)
最近在读《Effective C++》,对里面的思想和代码深有感触,因此在此做点记录并加以自己的理解,方便以后查看。本文内容来自条款06:若不想使用编译器自动生成的函数,就该明确拒绝。(Explicitly disallow the use of compiler-generated functions you do not want)。原创 2019-07-29 18:03:21 · 151 阅读 · 0 评论 -
全排列的递归和非递归实现
1.全排列的递归实现2.去重的全排列的递归实现3.全排列的非递归实现原创 2019-07-29 14:03:38 · 341 阅读 · 1 评论 -
二叉树的四种遍历方式
1.二叉树的层次遍历2.二叉树的前序遍历3.二叉树的中序遍历4.二叉树的后序遍历原创 2019-07-29 14:01:32 · 260 阅读 · 0 评论 -
读书笔记 ---- Const成员函数
最近在读《Effective C++》,对里面的思想和代码深有感触,因此在此做点记录并加以自己的理解,方便以后查看。本文内容来自条款03:尽可能使用Const (Use const whenever possible)。原创 2019-07-29 11:04:01 · 162 阅读 · 0 评论