
//C || C++
C/C++相关知识点
沙振宇
将来的你一定会感谢现在奋斗的你。当你的才华还撑不起你的野心时,那你就应该静下心来学习。
展开
-
Qt开发 之 抓取崩溃信息(读这一篇就够了)
文章目录1、简介1.1、常见崩溃1.2、什么是breakpad1、简介1.1、常见崩溃笔者之前抓取应用程序的崩溃是在windows上,用mingw编译器进行的程序,可以直接用微软提供的 SetUnhandledExceptionFilter() 方法来实现。但如果用在mac上用clang,就不能用这一套了。那有没有一种在各个平台上都能用但崩溃1.2、什么是breakpadhttps://github.com/google/breakpad...原创 2021-04-02 17:10:15 · 1790 阅读 · 5 评论 -
Qt开发 之 删除文件或文件夹到回收站(详解)
文章目录1、简介1.1、问题描述1.2、解决方案2、源代码2.1、WinAPI调用2.2、两行代码解决Release版本根目录驱动问题2.3、解决部分文件删除不成功的问题3、QFileInfo官方说明4、Qt 5.15版本的功能1、简介写这篇文章之前,已经看过很多类似的文章,都没有实质性的解决这个问题。1.1、问题描述原本程序在main函数中直接调用WinAPI删除文件或者文件夹到回收站,无论在Debug版本还是Release版本都不会有问题。但是如果封装成函数或者类,在栈中或者堆中去执行的时候,R原创 2020-11-23 20:18:17 · 2035 阅读 · 5 评论 -
C++面试常用知识点总结——基础篇
文章目录1、算法1.1、排序1.1.1、快排1.1.2、归并1.1.3、稳定性高效率高的排序1.2、广度优先算法和深度优先算法1.3、BFPRT算法1.4、二叉树1.4.1、遍历方式2、数据库2.1、画ER图2.2、如何备份2.3、加快数据库查询有几种方式2.4、建立索引如何加快查询2.5、内、外链接,左、右链接2.6、事务(transaction)2.6.1、特点、特性2.6.2、并发访问问题(...原创 2019-07-15 18:13:04 · 55446 阅读 · 11 评论 -
单例模式 C++(两种方式)、Python3
这里写自定义目录标题1、饿汉模式2、懒汉模式1、饿汉模式就是说不管你将来用不用,程序启动时就创建一个唯一的实例对象优点:简单,明了,容易理解,代码简洁。缺点:可能会导致进程启动慢,且如果有多个单例类对象实例启动顺序不确定。class Singleton{public: static Singleton* GetInstance() { return &m_inst...原创 2019-06-26 18:17:42 · 39319 阅读 · 0 评论 -
C++常用命名法与书写规范
常用命名法有三种:驼峰命名法、匈牙利命名法、帕斯卡命名法。这三种命名方法各有千秋,以庄子的齐物论来说就是“道无终始,物有死生,不恃其成”。我们要“吸百家之长,圆我代码功夫”,废话说了几行了,综合出来的代码规范如下:一、标识符1、简单、合理、准确的英文单词(不要缩写),切忌汉语拼音。(eg:不要把CurrentWidth写出NowWidth)2、不要仅靠大小写区分...原创 2018-06-27 18:27:55 · 10447 阅读 · 0 评论 -
C/C++ 宏定义中#、##、#@的区别
#表示:对应变量字符串化 ##表示:把宏参数名与宏定义代码序列中的标识符连接在一起,形成一个新的标识符连接符#@:它将单字符标记符变换为单字符,即加单引号。例如:#define B(x) #@x则B(a)即'a',B(1)即'1',但B(abc)却不甚有效。#include<stdio.h>#definetrace(x,format)prin...转载 2017-11-22 11:20:25 · 1653 阅读 · 0 评论 -
C++ XXTEA分组加密解密算法
微型加密算法(TEA)及其相关变种(XTEA,Block TEA,XXTEA)都是分组加密算法,它们很容易被描述,实现也很简单(典型的几行代码)。 TEA 算法最初是由剑桥计算机实验室的 David Wheeler 和 Roger Needham 在 1994 年设计的。该算法使用 128 位的密钥为 64 位的信息块进行加密,它需要进行 64 轮迭代。该算法使用了一个神秘常数δ...转载 2017-11-22 11:12:00 · 1022 阅读 · 0 评论 -
String类的实现 -- C++经典面试题
已知类String的原型为:class String{public: String(const char *str = NULL);// 普通构造函数 String(const String &other); // 拷贝构造函数 ~ String(void); // 析构函数 String & operate =(const转载 2017-07-21 15:36:23 · 395 阅读 · 0 评论 -
基础知识之strcpy、strcmp、strcat
//注意,assert只在debug时出现,最好用条件语句判断//参数:des为目标字符串,src为原字符串。返回值:目标串的地址。char * strcpy(char *dst,const char *src) { assert(dst != NULL && src != NULL); char *ret = dst; while原创 2017-04-10 16:53:28 · 8576 阅读 · 0 评论 -
比较QMap、QHash(顺便讲了如何解决QMap和QList混合时遇到的坑)
这两个是Qt中比较常见的容器。下面来说说我的理解:观点,技巧:如果要求数据量小,在乎查找速度的时候用QHash,数据量大,内存限制严格时用QMap。要掌握的基本要领:QMap提供了一个从类项为key的键到类项为T的直的映射,通常所存储的数据类型是一个键对应一个直,并且按照Key的次序存储数据,这个类也支持一键多值的情况,用类QMultiMapQHash具有和QMap几乎原创 2016-11-22 15:21:01 · 4124 阅读 · 0 评论 -
Qt下常用的数值计算(绝对值qAbs,最大qMax,最小qMin,开根号Sqrt,N次方是pow,断言宏Q_ASSERT和Q_ASSERT_X )
TqAbs(constT &value)Comparesvalue to the 0 of type T and returns the absolute value. Thus if T isdouble, thenvalue is compared to(double) 0.Example: int absoluteValue; int myVa原创 2016-09-27 14:18:02 · 34257 阅读 · 0 评论 -
Windows上简单调用QCamera摄像头Demo
QCamera在Qt版本不断更新时,它也在逐渐完善,现在在Qt5.6中已经很不错了,下面我来讲下我的这个小示例:1、在pro文件中添加媒体库2、头文件:3、源文件:4、添加ui文件。看下目前的效果:现在简单的示例已经做完,如果有不同要求,可以根据具体情况定夺。还要说的是发布时要注意添加这个文件夹哦,原创 2016-09-20 14:23:02 · 7171 阅读 · 18 评论 -
Qt在Windows上简单调用opencv摄像头Demo
OpenCV也和Qt一样,有很多版本。有各种平台版本,Android、ios、Windows、Linux等。同样在Windows上,也分vc10、vc11、vc12版。做一个简单的demo,用Qt调用opencv摄像头接口显示当前摄像头画面并拍照。开发环境:操作系统版本:Windows7sp1 64位Qt版本:5.3.2 msvc2010 32bitopencv版本:2.4.1...原创 2016-09-14 17:27:07 · 2956 阅读 · 0 评论 -
UML 开发之 单例模式的简单使用(QML调用C++)
这里举一个QML调用C++的例子:1、头文件2、源文件3、调用4、QML引用其实,在QML中调用图片并不用这么麻烦的事情,上面是为了讲解QML中调用C++单例模式举得简单例子。像QML中调用C++单例模式还是很常用的手段,必须要学会哟~QML调用网页上的图片只需要添加网址即可,例如:...原创 2016-09-14 15:28:35 · 1861 阅读 · 0 评论 -
QML中绘图(1、Canvas 2、QPainter与QML结合)
QML中的Canvas和HTML5中Canvas是一样的,可以参考W3CSchool中的学习方法:HTML 5 Canvas 参考手册画线、删除线、删除全部实例:不过,QML中的Canvas不够强大,画线会卡。我们用QPainter来实现画线,用QML来显示就好了,方式如下:1、先做好QPainter画线,做我们的类ALPaintedItem:(1)头文件...原创 2016-09-05 09:07:06 · 13937 阅读 · 3 评论 -
Qt/C++调用微软接口
调用微软接口杀死进程有时遇到特殊杀死不了的进程,我们还是要调用系统接口的,下面我将调用微软接口杀死进程代码贴一下:#include <Windows.h>#include <tlhelp32.h>static bool waitCloseProgram(QString proName){#ifdef Q_OS_WIN QString...原创 2016-09-02 11:30:27 · 2619 阅读 · 0 评论 -
C++中volatile、inline和pragma
volatilevolatile表示可以被某些编译器未知的因素更改,多被用在嵌入式编程,它和const对应。 通常我们这么做,是告诉编译器,这个变量是可变的。就像const告诉编译器这是只读的一样。volatile的对象,可 以被操作系统、硬件或者其它线程等改变。由于访问寄存器的速度要快过随机存储器(RAM),所以编译器一般都会作减少存取外部RAM的优化。遇到这个关键...原创 2016-09-01 13:37:58 · 2573 阅读 · 0 评论 -
C++在delete指针后要赋值为NULL
C++标准规定:delete空指针是合法的,没有副作用。所以我们在Delete指针后赋值为NULL或0是个好习惯。对一个非空指针delete后,若没有赋NULL,若再次delete的话有可能出现问题。如下代码:可以看出delete是释放指针指向的内存,并不是指针本身所占有的内存。所以delete后,指针的还是指向那块区域,并未清0,所以如果下次用到,就会发生xxx空间不原创 2016-09-01 13:36:58 · 15774 阅读 · 12 评论 -
C++中explicit构造函数
只能被显式调用。 explicit构造函数是用来防止隐式转换的。请看下面的代码:class Test1{public:Test1(int n){num=n;}//普通构造函数private:int num;};class Test2{public:explicit Test2(int n){num=n;}//explicit(显式)构造函数priv...原创 2016-08-26 13:47:25 · 7834 阅读 · 0 评论 -
C++中Struct和Class的区别
默认的继承访问权限(struct是public的,class是private的)1、最本质的一个区别就是默认的访问控制: C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能。struct能包含成员函数,能继承,能实现多态。我们在平时写类继承的时候,通常会这样写:class B : public A,就原创 2016-08-26 13:44:03 · 2519 阅读 · 0 评论 -
C++多态性、虚函数
封装可以使得代码模块化,继承可以扩展已存在的代码,他们的目的都是为了代码重用,而多态的目的则是为了接口重用。也就是说,不论传递过来的究竟是那个类的对象,函数都能够通过同一个接口调用到适应各自对象的实现方法。结果是1,2,1,4,3,2。是由于每个虚函数都有一个虚函数列表。什么是虚函数?虚函数是在基类中被声明为virtual,并在派生类中重新定义的成员函数,可实现成员函数的动态覆盖(...原创 2016-08-26 13:40:54 · 7900 阅读 · 0 评论 -
C++除2乘2简单方法及算法效率问题
算法效率速度排行:移位 > 赋值 > 大小比较 > 加法 > 减法 > 乘法 > 取模 > 除法;为了效率,有时会选择移位运算。3乘2:就是3 6除2:就是3 >> 1右移一位左移右移方式一般是先换算成2进制数,然后进行移位之后再换位10进制数具体效率问题,请看:算法效率链接位运算速率极快原创 2016-08-26 13:35:18 · 2967 阅读 · 0 评论