![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
文章平均质量分 70
我是标同学
我非常喜欢编程
展开
-
QT打开外部程序并嵌入Qt子窗口的缺点
总之,这样做,是不好用的,所以要么就是以分离软件的形式启动,让它独立运行,或者直接嵌入源码一起编译了(在两个软件都是自己开发的情况了,因为需要源码)。原创 2023-03-01 01:55:09 · 2530 阅读 · 2 评论 -
qtcreator不能添加文件 Could not add following files to project
这是因为.pro文件的编码不是UTF8,导致qtcreator不能修改该文件,所以新文件加入不了。用notepad++把该文件修改为UTF8编码即可。原创 2023-02-02 18:57:58 · 1381 阅读 · 0 评论 -
c/c++结构体如何判断相等而且是否能相互赋值
直接讲结论:结构体之间,是支持直接用等号=赋值的但是不支持直接用==判断是否相等的,编译会报错原创 2022-12-05 15:13:56 · 5470 阅读 · 1 评论 -
Qt中定时器的所有使用方式
该函数的声明为:int startTimer(int interval, Qt::TimerType timerType = Qt::CoarseTimer);参数一为时间间隔,单位毫秒;Qt::VeryCoarseTimer(很粗略的定时器,只保留完整的第二精度,大约为500毫秒);Qt::PreciseTimer(精确的定时器,尽量保持毫秒精度,试图保持精确度在1毫秒);Qt::CoarseTimer(粗略的定时器,尽量保持精度在所需的时间间隔5%范围内);该函数关闭一个定时器,参数为定时器的编号。原创 2022-11-14 16:45:13 · 13286 阅读 · 1 评论 -
c/c++常见的数据类型表示的范围
Windows平台(无论32/64位的系统,机器,比编译器):int跟long是一样的,都是占4个字节。取决于平台(但是有个规定,long 至少 >= int)Unix系统平台:int是32位,long就是64位的。有些8/16位单片机:int甚至只是16位的而已。原创 2022-11-13 10:34:13 · 326 阅读 · 0 评论 -
qt源码解析1--事件循环原理(重写事件函数,事件过滤器等)
首先看我上篇博客准备好环境:现在进入主题。原创 2022-11-11 17:03:44 · 1823 阅读 · 0 评论 -
qt源码解析0--源码获取与调试环境准备
事件循环与处理过程,是一个gui库的核心。为了能更好的使用qt,写出更好更灵活的代码,我们需要搞明白qt中的事件循环原理。qt自从5.11之后的版本,就不提供安装包下载了,只能在线安装。5.11以及之前的版本的安装包下载:Index of /new_archive下面我以qt5.6.1为例。原创 2022-11-11 09:24:08 · 2538 阅读 · 0 评论 -
c/c++一个指针delete两次的后果
C++危险就在内存泄漏内存管理,但是也是迷人的地方。一般这些指针导致的内存问题都很难发现,除非编程经验非常丰富,下面说的就是一个例子。原创 2022-10-28 00:30:15 · 2311 阅读 · 0 评论 -
C++中NULL和nullptr的区别
NULL在C++中就是0,这是因为在C++中void* 类型是不允许隐式转换成其他类型的,所以之前C++中用0来代表空指针,但是在重载整形的情况下,会出现上述的问题。所以,C++11加入了nullptr,可以保证在任何情况下都代表空指针,而不会出现上述的情况,因此,建议以后还是都用nullptr替代NULL吧,而NULL就当做0使用。其他:在没有C++ 11的nullptr的时候,我们怎么解决避免这个问题呢?转载 2022-10-27 23:06:27 · 316 阅读 · 0 评论 -
c++回调函数的几种写法(注意成员函数)
主要有3种写法。1.普通函数(全局函数)作为回调函数这个就跟C语言里面的一样,没什么好说的2.类的普通成员函数作为回调函数注意点类的成员函数实际上是有一个隐含的void*形参的(由编译器给自动加上的),这个实际上就是所属类给它传递的this指针,不然该成员函数怎么不加前缀就能访问类中的其它成员的嘛。目标实现Add类向MainWindow类注册一个成员函数int addFun(),作为回调函数实际上这个函数全称是int addFun(void*)。所以注册函数定义时候,就需要把形参原创 2022-10-11 21:51:18 · 2673 阅读 · 0 评论 -
c++匿名函数 原理 以及 注意点
匿名函数,是一个对象,对象,对象,重要的事情说三遍。匿名函数定义时候,就是一个类的定义过程,然后马上会创建出一个栈对象来(不管我们有没有实际调用到这个匿名函数,当然编译器开启了优化就另说了),所以如果定义这个匿名函数的作用域中没有使用它,那么出了这个作用域,就无法访问了(当然本文后面说了可以把该对象给传递出去,就可以别的地方用了)原创 2022-08-20 23:36:16 · 1930 阅读 · 0 评论 -
C++用finally函数实现当前函数运行结束自动执行一段代码
在fun函数开始处,定义一个栈对象,构造函数给它传递要给匿名函数进去初始化该对象,然后fun函数结束,会自动析构这个栈对象。(然而该对象的析构函数,恰好是。传递进去的这个匿名函数(也叫lambda函数),这样就实现了fun函数结束时候自动执行一段代码啦(这里就是那个匿名函数))。//希望在这里能自动执行一段设定好的代码,实现一些自动清除啥啥啥的操作。.........原创 2022-07-29 10:52:12 · 1413 阅读 · 0 评论 -
shared_ptr 和 make_shared 的使用(以及qt信号和槽连接)
它能够记录多少个shared_ptr共同指向一个对象,从而消除显示的调用delete,当引用计数变为零的时候就会将对象自动删除。主要功能是在动态内存中分配一个对象并初始化它,stdshared_ptr可以通过。方法来获取原始指针,通过。来查看一个对象的引用计数。.........原创 2022-07-27 10:30:19 · 3789 阅读 · 0 评论 -
C与C++的11大区别
1,C++有类,C没有这是最简单的一个区别在业务代码量大的时候,C没有原生的面象对象支持,真的是少了一把利刃啊2,C++有重载,C没有同样的函数名,根据不一样的参数被传递到不一样的过程让代码看起来更人性化(只是看起来而已,慎用)3,C++的结构体可以定义成员函数,C不能其实我个人很少在结构体中定义函数,如果这样的话,为什么不设计成类不过,确实有一点,在一些数据存储交换的对象中,定义一个结构体的构造函数,可以省去memset之类的结构体过程4,C++的函数中变量可以定义在任意位置,C的旧标准是只能定义在转载 2022-07-09 10:20:33 · 1548 阅读 · 0 评论 -
c++/qt命名空间分析
c语言防止标识符同名冲突:函数写在不同.c文件内c++用命名空间来进一步防止同名冲突:函数写在不同.c文件内 不同的类里 写在不同的命名空间namespace里命名空间定义:namespace Ui {class MainWindow; //命名空间内可以放变量,函数,结构体,类等等}外部使用MainWindow类:Ui::MainWindow方式。 在使用者源码文件开头,using namespace Ui;,这样就可以直接使用该命名空间 Ui 中的内容了,M原创 2021-03-15 17:25:46 · 1813 阅读 · 1 评论 -
c++语言与c语言相互调用 踩的坑 否则报函数未定义 一文读懂extern “C“
同一个工程中c++语言与c语言相互调用之处踩的坑否则报函数未定义,注意如下几点:c编译器和c++编译器编译同一个函数出来的符号结果是不一样的(因为c++支持重载,比如fun(int a,int b)函数c++编译出来就是fun_int_int,而c编译出来仅是fun),因此无法相互调用 extern "C"{ } 是c++编译器才能识别的关键字,c编译器遇到了会直接报错 xx.cpp文件IDE会自动采用c++编译器进行编译,xx.c文件被自动采用c编译器来编译 __cplusplus宏是c++编译原创 2021-03-11 11:56:15 · 3308 阅读 · 1 评论 -
基类指针释放派生类对象方法
原因:基类对象的指针操作派生类对象时,防止析构函数只调用基类的,而不调用派生类的下面详细说明://基类 class A{ public : A(){ cout<<"A构造函数"<<endl; } ~A(){cout<<"A被销毁了"<<endl;} void Do(){ cout<<"A要做点什么"<<endl; }};//..转载 2020-08-30 09:28:41 · 1564 阅读 · 1 评论 -
关于构造函数内调用虚函数的问题
在构造函数bai不要调用虚函数。在基du类构造的时候,虚函数是zhi非虚,不会走到派dao生类中,既是采用的静态绑定。显然的是:当我们构造一个子类的对象时,先调用基类的构造函数,构造子类中基类部分,子类还没有构造,还没有初始化,如果在基类的构造中调用虚函数,如果可以的话就是调用一个还没有被初始化的对象,那是很危险的,所以C++中是不可以在构造父类对象部分的时候调用子类的虚函数实现。但是不是说你不可以那么写程序class Base{public: Base() { ...原创 2020-08-08 11:07:32 · 1302 阅读 · 0 评论 -
总结了一下c/c++函数和变量的命名规则
自己的命名规则结合匈牙利命名法,是为了防止同名问题,同时又不拘束于规则,写出一些重要的:变量名=属性(作用域,成员变量,全局变量等)+类型(什么类型,指针,字符串等)+对象描述(自己发挥,见名知意即可),且采用驼峰命名法,看起来比较紧凑属性部分:全局变量 g_ (global)c++类成员变量 m_ (member)类型部分:指针 p字符串str对象描述部分:这里主要是为了见名知意效果,但是又不能写太长,否则不方便使用,所以采用去元音的方式命名即可,比如count:...原创 2020-08-08 09:24:00 · 1596 阅读 · 0 评论 -
c++虚函数和纯虚函数讲解
虚函数就是声明为virtual void fun();,其基类必须定义它,即实现它 纯虚函数声明为virtual voidfun()=0,基类不需要定义它,所以此基类又叫抽象类,不可以实例化出对象。但是派生类必须实现它。纯虚函数的作用是使得该类成为抽象类,提供了该接口,派生类必须按这样的接口来用。比如动物是一个抽象类,派生类为老虎,狮子等类,这些就可以实例化出对象,而动物类就不行,只是一个抽象的模型罢了...原创 2020-08-06 16:11:00 · 492 阅读 · 0 评论 -
NULL和nullptr区别c++和qt
c++中空指针都用nullptr任何时候都是完全没问题的 c中都用NULL详细的一些介绍,看如下博客:https://blog.csdn.net/qq_18108083/article/details/84346655 https://blog.csdn.net/znzxc/article/details/80354434?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.chann原创 2020-07-25 10:42:29 · 1169 阅读 · 0 评论 -
内联函数、构造函数、静态成员函数为甚不可以定义为虚函数
因为虚函数的作用是为了实现多态(父类指针可以访问子类的函数),即运行时候才知道这个函数具体是什么,那么也就是说提前不把这个函数给写死的函数才能设为虚函数,而static修饰的函数也就是静态函数属于类,编译时候就已经确定它的函数体具体内容了,以后不能再变(即已经被写死了),所以它不能充当虚函数。而内联函数也是编译时候展开的函数实体,即也就是给写死了,所以也不能动态改变,所以也不能作虚函数。此外构造函...原创 2019-10-17 22:06:54 · 915 阅读 · 0 评论 -
c++设计模式中的懒汉模式和饿汉模式的各自两种写法
根据单例对象创建时间,可分为两种模式:饿汉模式 +懒汉模式 懒汉模式实现方式有两种: (1)静态指针 + 用到时初始化 (2) 局部静态变量为什么叫做懒汉模式,就是不到调用getInstance函数,这个类的对象是一直不存在的饿汉模式饿了肯定要饥不择食。所以在单例类定义的时候就进行实...原创 2019-09-30 21:47:11 · 896 阅读 · 0 评论