C/C++
文章平均质量分 81
kevin_org
业精于勤而荒于嬉,行成于思而毁于随。——韩愈
展开
-
常见的C++11特性(一)
ww原创 2021-11-12 10:48:36 · 297 阅读 · 0 评论 -
Qt之信号槽机制
信号槽机制所谓信号槽,实际上跟观察者模式(公众号的发布-订阅)比较类似。信号槽的实现是借助“元对象编译器”Moc。这个工具被集成到Qt的编译工具链qmake中,再开始编译QT时,会先去执行moc将信号、槽及宏定义进行编译生成一个moc_xx.cpp文件,之后就是C++常规的编译链接了。简单的理解为C++要对QT的语言进行编译,就要利用元对象编译器将其翻译为C++认识的语言。moc的本质是反射,java中有,C++是没有的,简单的来说就是在程序运行时,获取对象的构造函数、成员函数以及成员变量。并原创 2021-11-11 18:04:02 · 606 阅读 · 0 评论 -
Qt调试弹出The CDB process terminated
Qt调试弹出The CDB process terminated解决办法将Qt MinGw环境下的项目移植到msvc下,程序运行时报的错,遇到这种问题,可以从以下两方面入手:一种是查下是否引用了第三方库文件,若有引用,可去项目配置中添加lib和include相关文件(第三方库文件可在pro文件中添加,也可在系统环境变量中添加);另一种是直接双击生成的exe文件,会提示该项目缺少哪些dll文件,须一一添加,直到运行通过为止。...原创 2020-08-11 09:46:51 · 2557 阅读 · 0 评论 -
error C2491-不允许 dllimport 静态数据成员 的定义
error C2491-不允许 dllimport 静态数据成员 的定义原创 2020-08-11 09:22:14 · 4301 阅读 · 0 评论 -
Qt 生成dump文件
1.生成dump文件Dump文件是进程的内存镜像。可以把程序的执行状态通过调试器保存到dump文件中。Dump文件是用来给驱动程序编写人员调试驱动程序用的,这种文件必须用专用工具软件打开,比如使用WinDbg打开。当我们的程序发布出去之后 , 在上位机上是无法跟踪自己代码的 BUG 的 ,, 所以 Dump 文件对于我们来说特别有用,最快的解决方式是生成dump文件,通过生成dump文件使用调试工具进行调试,还原程序崩溃时的状态,能够起到快速定位排查问题的作用 。//生成dump代码#inclu原创 2020-08-11 09:31:08 · 1493 阅读 · 2 评论 -
C++中实现回调机制的几种方式(一共三种方法,另加三种)
转自:http://www.cnblogs.com/weiym/archive/2012/08/28/2660053.html(1)Callback方式Callback的本质是设置一个函数指针进去,然后在需要需要触发某个事件时调用该方法, 比如Windows的窗口消息处理函数就是这种类型。比如下面的示例代码,我们在Download完成时需要触发一个通知外面的事件:typedef void ...转载 2019-04-09 15:32:27 · 2327 阅读 · 0 评论 -
MSB8027: Two or more files with the name of ***.cpp will produce outputs to the same location.
【译】MSB8027: Two or more files with the name of ***.cpp will produce outputs to the same location.原文链接:http://www.setoreaustralia.com/msb8027-two-or-more-files-with-the-name-of-texture-cpp-will-produc...转载 2019-04-16 09:56:53 · 1754 阅读 · 1 评论 -
VS 的链接库的设置
在VS开发环境上,其实经常会遇到一写项目环境的配置问题,有时会经常困扰我们项目的进展,以及开发人员。因为我刚刚开始接触VS项目的开发,所以把一些困扰自己的问题记录下来,以便日后学习以及和大家进行分享。以下内容为“原创”+“转载”首先,解决方案和项目文件夹包含关系(c++项目):VS解决方案和各个项目文件夹以及解决方案和各个项目对应的配置文件包含关系,假设新建一个项目ssyy,解决方案起名f...转载 2019-08-05 18:03:02 · 1091 阅读 · 0 评论 -
C++之 map使用与操作总结
1、map简介map是STL的一个关联容器,它提供一对一的hash。第一个可以称为关键字(key),每个关键字只能在map中出现一次;第二个可能称为该关键字的值(value);2、map容器的迭代器(first和second)map迭代器中的first对应key值,而second对应value值。例如map<int, string> m_map;m_map[1] = ...原创 2019-05-04 21:43:13 · 1059 阅读 · 0 评论 -
Q_DECL_EXPORT的作用
转自:https://blog.csdn.net/bxd1314/article/details/46966857?utm_source=copyQ_DECL_EXPORT的作用global.h#ifndef FitVCam_GLOBAL_H#define FitVCam_GLOBAL_H #include <QtCore/qglobal.h> #ifdef FitVC...转载 2019-08-15 16:40:32 · 2592 阅读 · 0 评论 -
构造函数隐式转换
转载博客:http://blog.csdn.net/thefutureisour/article/details/7705771构造函数隐式转换构造函数会引起一个不引人注意的问题:用单个实参来调用的构造函数定义了从从形参类型到类类型的一个隐式转换。举个例子说:class Sales_item { public: std::istream& input(std...转载 2019-09-18 10:22:49 · 1141 阅读 · 0 评论 -
c++ 隐藏理解
在面向对象的开发过程中,经常出现类的继承,这里面出现的成员函数的重载(overload)、覆盖(override)与隐藏(hidden)很容易混淆。首先澄清这3个概念1. 重载1)发生在同类中;2)函数名相同;3)参数不同;4)可加可不加virtural关键字2. 重写(覆盖)1)发生在父类与子类中;2)函数名相同;3)参数相同;4)必须加virtural关键字3. 隐藏...原创 2019-03-27 16:22:33 · 820 阅读 · 0 评论 -
C++ 链表的操作
要求1、将两个有序链表合并成一个链表思路一新建一个链表,然后比较两个链表中的元素值,把较小的那个链到新链表中,由于两个输入链表的长度可能不同,所以最终会有一个链表先完成插入所有元素,则直接将另一个未完成的链表直接链入新链表的末尾。代码实现:class Solution {public: ListNode* mergeTwoLists(ListNode* l1, ListNode*...转载 2019-03-11 16:15:42 · 331 阅读 · 0 评论 -
Qt5 MVC框架
1、MVC 设计模式起源于smalltalk的一种与用户界面设计相关的设计模式。作用:实现数据与用户界面分离;组成:模型model(表示数据)、视图view(表示用户界面)及控制controller(定义了用户在界面上的操作)。2、Qt MVC设计模式Qt的MVC设计模式没有控制controller,添加了代理delegate能够自定义数据条目item的现实和编辑方式。3、模型和视图...转载 2019-01-08 14:16:56 · 1024 阅读 · 0 评论 -
C++ 之 八大排序算法
转自: https://blog.csdn.net/hguisu/article/details/7776068#概述排序有内部排序和外部排序,内部排序是记录在内存中进行排序,而外部排序是因排序的数据容纳全部的排序记录,在排序过程中需要访问外存。八大排序时间和空间复杂度比较:当n较大,则采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或者归并排序。快速排序: 是目前基于...转载 2019-01-16 15:51:24 · 336 阅读 · 0 评论 -
C++ 面试题汇总(二)
1. Epoll、poll及select的区别相同点:三者均能够提供多路I/O复用的解决方案,在linux平台上都可以支持。不同点:&lt;1&gt; Select的本质是设置或者检查存放文件句柄(fd)的标志位的数据结构来进行下一步处理。其缺陷是单个进程所打开的fd是有限制的,默认值是1024;并且对socket扫描是线性扫描,即采用轮询的方式,效率较低。当维护一个存放大量fd的数据结构...原创 2019-01-08 16:56:35 · 270 阅读 · 0 评论 -
C++ 面试题汇总(一)
1. C++面向对象特点。2. 多态、虚函数(实现原理)、纯虚函数、抽象类及虚基类3. 什么是引用?引用使用时需要注意哪些?4. 将引用作为函数参数有哪些特点?5. 什么时候使用常引用?将引用作为函数返回值类型的格式、好处及需要遵循的规则?6. 引用和指针的区别?7. 重载、覆盖(重写)及隐藏的区别?8. 引用是否能实现动态绑定,为什么引用可以实现调用虚函数?9. 描述内存分配及区...原创 2019-01-10 17:13:37 · 276 阅读 · 0 评论 -
C++ 常见的基础概念
1. C++面向对象特征封装:指隐藏对象的属性和实现细节,仅对外提供公共访问方式;继承:可以使子类具有父类的属性和方法或者重新定义、追加新的属性和方法,是代码扩展的一种方式;继承包含实现继承、接口继承及可视继承。其中,实现继承是使用父类的属性和方法;接口继承是基于父类的属性和方法,子类继承父类的方法并进行重新实现的过程;可视继承是指子窗体(类)使用父窗体(类)的外观和实现代码的能力。多态:多...原创 2019-01-10 17:13:56 · 477 阅读 · 0 评论 -
继承QTreeWidgetItem发生error: ‘staticMetaObject’ is not a member of ‘QTreeWidgetItem’ 错误
转自:https://www.xuebuyuan.com/329648.html#ifndefQQUSERITEM_H就发生下列错误#defineQQUSERITEM_H#include<QTreeWidgetItem>classQQUserItem:publicQTreeWidgetItem{ Q_OBJECTpublic: explicitQQUserItem(QQ...转载 2019-02-15 17:58:06 · 821 阅读 · 0 评论 -
C++ 用Command模式简单的实现Undo&Redo功能
转自:https://www.cnblogs.com/TianFang/archive/2013/05/19/3086820.html许多GUI程序中提供一个"撤销&重做"的功能,这个功能对用户来说非常友好;本文就简单的介绍一下如何用C#实现该功能。实现Undo&Redo功能的基本模型是带撤销功能的命令模式,它将每步操作保存为一个命令对象,如下所示:interface Ico...转载 2019-02-20 14:02:00 · 1349 阅读 · 0 评论 -
sizeof 32位和64位操作系统的区别
32位和64位操作系统各类型sizeof大小1) 32位操作系统2) 64位操作系统3) 常见的类型sizeof大小空类:C++编译器强制给这种类插入一个缺省成员,长度为1;如果有自定义的变量,变量将取代这个缺省成员。class A{ };cout<<sizeof(A); // 输出1只有一个char型class A{ char c;};cou...原创 2019-03-06 14:00:55 · 3074 阅读 · 0 评论 -
为什么析构函数要声明为虚函数
防止内训泄漏。原因:如果在派生类中申请了内存空间,在析构函数对这块内存进行释放。假设基类中采用非虚析构函数,当删除基类指针指向派生类的对象时,就不会触发动态绑定,也不会调用派生类的析构函数。那么,派生类的内存空间得不到释放就会发生内存泄漏。为什么不会触发动态绑定?所谓的动态绑定的条件是:基类的指针或引用有可能指向不同的派生类的对象。对于非虚函数,执行时实际调用该函数的对象类型为该指针或引用的...原创 2019-03-27 16:50:02 · 1754 阅读 · 2 评论 -
VS2013-C4996问题解决
C4996问题解决方案1、使用安全的函数替换老的函数2、屏蔽警告信息a.#pragma warning(disable:4996),仅对该问题有效b.在预编译头文件stdafx.h里定义下面的宏(include其他头文件的最前面):#define_CRT_SECURE_NO_DEPRECATE或#define_CRT_SECURE_NO_WARNINGSc.更改预处理定义:项目-&...原创 2019-03-10 18:57:16 · 725 阅读 · 0 评论 -
C++四种类型
转自:https://www.cnblogs.com/Spider-spiders/p/8898585.html前言C风格的强制类型转换(Type Cast)很简单,不管什么类型的转换统统是: TYPE b = (TYPE)a。 C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。(1) const_castconst_cast,字面上理解就是去const属性。 static...转载 2019-03-07 15:53:24 · 573 阅读 · 0 评论 -
C++面试题:编写类String的构造函数、析构函数和赋值函数
考点:构造函数、析构函数和赋值函数的编写方法// 已知条件class String{public: String (const char* str = NULL) {} // 构造函数 String(const String &other); // 拷贝构造函数 ~String(); // 析构函数 String & operator = (const Stri...原创 2019-03-11 10:30:06 · 406 阅读 · 0 评论 -
两个栈实现一个队列 两个队列实现一个栈
1、两个栈实现一个队列三种思路:思路一将stack1作为存储空间,stack2作为临时缓冲区。整个流程分为两种状态,即入队时,直接将stack1压入栈中;出队时,将stack1中的所有元素依次出栈压入stack2中,再将stack2的栈顶元素弹出,最后将其倒回stack1。见下图所示,思路二注意:思路中有一个细节需要优化下,在出队时,将stack1的元素逐个“倒入”stack2时,原...转载 2019-03-11 14:32:12 · 272 阅读 · 0 评论 -
编程:分别实现atoi函数和itoa函数
要求1:自定义一个函数,实现整型转字符串,要求不能使用itoa函数。代码实现void IntToStr(unsigned char* str, unsigned int intnum){ unsigned int Div = 1000000000, j = 0, Status = 0; //32位无符号数最大是10位整数,所以Div=10 0000 0000 for (...原创 2019-03-11 14:51:39 · 310 阅读 · 0 评论 -
C++设计模式之单例模式
单例模式单例模式是常见的一种设计模式。它的核心结构中包含一种单例的特殊类,通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只能实例化一个对象实例。那么,如何简单的实现单例模式呢?1> 构造函数声明为private或者protect防止被外部函数实例化;2> 提供一个全局的静态函数或者安全访问点;3> 内部保存一个private static的类指针...转载 2019-01-08 13:32:51 · 107 阅读 · 0 评论