自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 搜狗输入法 个人输入习惯同步

输入习惯同步

2022-12-27 11:57:56 1119

原创 Git单个文件历史修改记录及回退

$ git log --pretty=oneline test.txt --这是用来查看单个文档的提交记录,还有其他命令能够查看修改的difff98ad87abdc9e3414e9343d3651d66dc5ebda36e 再次提价修改3e60d8e5603fa0d702255d198b45e912c6b8c747 修改了文档,同时新增了参考文档eb1317016a779443b8a...

2019-08-09 15:54:06 2912

原创 关于临时变量的返回

今天写一个+的重载,计算结果只能返回一个临时变量对象,但是这个对象比较复杂,里面有一些指针成员变量。然后,发现在这个函数结束,也就是return这个临时变量时,进到了这个对象的类的析构函数中,这是可以理解的,因为临时变量会在函数结束前析构掉。然后,出了这个重载函数,到调用这个加号重载的那句语句A,在A到下一句之间,又进了一次析构函数。然后我的程序就崩掉了。想了好久,猜到了一个原因应该是返回值的析构...

2018-09-17 16:58:58 1102

转载 学习STL源码_空间适配器_new

在提供的简单例子中看到一句 new(p) T1(value); 之前一直都没有见过这种用法。搜了一下:C++ 中 new 操作符内幕:new operator、operator new、placement new这篇文章里面有一篇引用C++中的new、operator new与placement new抄一些基本的:new operator/delete operator就是n...

2018-09-03 19:37:12 305

转载 assert()函数

今天,遇到一个函数返回值时引用,但是返回值存在为NULL的情况。下面是搜到的解决方案然后,就搜了搜assert()函数的用法,找到一篇,贴在下面assert()函数用法总结assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:#include <assert.h>void assert( int expression )...

2018-04-13 16:14:52 12972

转载 static全局变量与普通全局变量的区别

懒得总结直接粘来源:点击打开链接全局变量具有全局作用域。全局变量只需在一个源文件中定义,就可以作用于所有的源文件。当然,其他不包含全局变量定义的源文件需要用extern 关键字再次声明这个全局变量。局部变量也只有局部作用域,它是自动对象(auto),它在程序运行期间不是一直存在,而是只在函数执行期间存在,函数的一次调用执行结束后,变量被撤销,其所占用的内存也被收回。静态局部变量具有局部作用域,它只...

2018-03-27 18:20:39 451

转载 C++ 导入导出动态库

今天不明白为什么大家在写动态库的时候,都要用到#ifdef @@@@API#else#define @@@@ __declspec(dllimport)#endif为什么明明是导出动态库,还要用到dllimport。是因为别人用到我们提供的动态库的时候,会包含这个头文件,然后他们不会define @@@@API,所以会跳到else里面,他们需要导入,正好。摘抄:C++的dllexport和...

2018-03-27 16:59:01 2494

原创 模板的声明和定义 头文件与源文件

今天,写了一个List的模板类,然后把它的声明和定义分别放在头文件和源文件中,发现编译不通。然后,就有疑问了,一是为什么那些普通类我们分为头文件和源文件能编译通过,二是模板为什么不行,所以这个编译究竟做了什么,这才是我的问题。当我们对一个solution右键选择生成的时候,会对所有的.cpp进行编译(我感觉哈),每个对应生成一个.obj文件。当cpp进行编译时,那种有include头文件的,就是将...

2018-03-22 10:46:47 1767

转载 C宏定义——#号和##号

#:将后面的 宏参数 进行字符串操作,就是将后面的参数用双引号引起来 ;##就是用于连接,拼接。#define PRINT(NAME) printf("token"#NAME"=%d\n", token##NAME)int main(){ int token9=9; PRINT(9);//printf("token""9""=%d\n",token9);}#include &l..

2018-03-15 17:24:19 555

原创 git 想要恢复到上一次提交

首先,git status 的状况是有一些changes not staged for commit,然后有一些Untracked files。用git checkout head . 首先将工作区的恢复到上一次提交,然后发现untracked的还是存在,这时候用git clean -df 删掉没有跟踪的。然后,就可以进行分支的切换了。

2018-01-16 16:39:15 1835

原创 extern "C"

由于C++支持函数重载,因此编译器编译函数的过程中会将函数的参数类型也加到编译后的代码中,而不仅仅是函数名,会将函数名和参数联合起来生成一个中间的函数名称,而C语言则不会,C语言并不支持函数重载,因此编译C语言代码的函数时不会带上函数的参数类型,一般只包括函数名,因此会造成链接时找不到对应函数的情况,此时C函数就需要用extern “C”进行链接指定,这告诉编译器,请保持我的名称,不要给我生成用于

2018-01-15 15:56:55 135

原创 C 小错误

1. 2017/11/20一个同事遇到的。在一个类中有一个私有成员变量char数组比如 char m_name[32],有一个public函数char* GetName(){ return m_name;},然后这个同事想要在类外部的把m_name拷到一个变量上,用了strcpy_s这个函数,但是他写错了顺序,如下:char tmpName[32];//假设已经有了类的实例tmpIn

2017-12-06 10:07:18 144

原创 VS 库的问题

之前一直以为关于库的使用,在属性->链接器->常规(附件库目录)里设置正确就可以了,但是链接器的部分也还只是生成目标文件,如果是可执行文件,只有在运行的时候或者说DEBUG的时候,才会看自己要用到的DLL文件。这个对应在属性->调试->环境里设置。如果没有设置,正常找自己运行的目录下是否有对应的DLL,然后找环境变量PATH下的目录。然后,不要在PATH下瞎添加目录,因为如果涉及到版本问题,它

2017-11-13 11:12:28 194

原创 GUID

最近看了一丢丢 windows核心编程,里面提到建议使用GUID的字符串形式作为对象名称使用,来确保命名的唯一性。于是查了查GUID:全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符。GUID主要用于在拥有多个节点、多台计算机的网络或系统中。在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID

2017-11-02 16:41:47 201

原创 Qt main函数a.exec()函数

今天写了一个QT的小程序,大致就是有一个槽和一个信号,然后,还有一个发信号的函数。然后,我在main函数里面的a.exec()之前,加了一个while循环,每一秒我就循环执行那个发信号的函数,结果发现根本就进不到槽函数里面。然后就是各种找错,当然是瞎找。最后的原因是,由于mian()函数一直卡在while循环里,就没有执行到a.exec()函数,而a.exec()函数的作用是使程序进入事件

2017-10-24 11:47:08 11140 1

原创 c指针与函数参数传递方式

今天,知道了一个好像醍醐灌顶的东西,大学四年真的学的太少啦。/首先,已经知道C++中的函数参数传递方式有两种:按值传递和按引用传递。其中按引用传递分为,用引用参数和用指针参数传递。一个变量的引用参数和它指向同一地址,所以用引用参数按引用传递,传递的就是原来的参数,而并不是该参数值的拷贝,也是早就知道的。那用指针参数传递按引用传递,之前的想法可能有错。指针,假设int val = 1

2017-10-20 10:39:47 612

原创 C函数参数压栈问题

今天写了一个sprint_f(),发现了一个大问题。int main(){ char str[32] = "abcd"; for(int i = 0; i < 32; ) { printf("%c_%c", str[i], str[i++]); } return 0;}按道理这个后加加应该不会影响前面的,输出的应该是aabbccdd但是,不是的!输出是

2017-10-19 09:45:24 359

原创 C void*

若想在void* 上进行指针地址的加减操作实现移动,需要强转为自己想要的类型如char*

2017-09-18 16:09:38 381

原创 QT 遇到的一些处理很久的Bug

1. 参见信号和槽的连接的那篇;2. label拼错了!!!不要拼成lable!!!

2017-08-28 11:43:09 481

原创 QT 信号和槽看似connect不上

调试时发现有些信号发射了,但是与之相关的槽函数没有执行的原因,目前遇到的有:1.语法错误仔细检查格式是不是对的,然后参数是否对应2.一个类中的信号与另一个类中的槽函数在SIGNAL()和SLOT()中的括号里写的直接就是槽和信号的名字,不用再加作用域。例如类A和类B,A中的某个槽函数Slot_A()与B的信号Signal_B(),然后A在B中实例化为a,那么在B中connect

2017-08-25 10:08:13 1058

原创 QT 关于emit VS2008和VS2013的不同

今天把在VS2013中一个简单的QT程序的头文件和源文件直接添加到VS2008中,按道理是能通过编译的,但是却一直报类访问权限的问题。大致就是类ClassA中有一个函数static ClassA* getInstance(),有一个信号SignalA,然后我在类之外的一个函数FuncA中发射信号 emit ClassA::getInstance()->SignalA;这个在VS2013 Q

2017-08-24 11:49:42 449

转载 VS 编译错误error: LNK

error: LNK 2005参考:error:LNK2005 已经在*.obj中定义造成LNK2005错误主要有以下几种情况:  1.重复定义全局变量。2.头文件的包含重复。解决办法是在需要包含的头文件中做类似的处理:  #ifndef   MY_H_FILE       //如果没有定义这个宏    #define   MY_H_FI

2017-08-23 11:24:06 247

转载 operator 的用法

1. 操作符重载略2.点击打开链接点击打开链接点击打开链接点击打开链接点击打开链接

2017-08-16 17:00:51 871

原创 利用 uic.exe 手动生成ui头文件

1. 从CMD中进到uic.exe,它在qt安装目录的bin文件夹中。cd Qt\Qt5.3.2\5.3\mingw482_32\binPS:发现黑框框还是有一点点厉害的,用鼠标选中某文件,拖到黑框框里,文件对应的路径就直接复制到了黑框框里,蛮方便的。2.调用exeuic 某ui文件 -o 输出文件参考qt creator 使用Ui文件的问题

2017-08-10 16:10:17 3304

转载 UML类图与类的关系详解

UML类图与类的关系详解泛化(generalization):表示is-a的关系,是对象之间耦合度最大的一种关系,子类继承父类的所有细节。直接使用语言中的继承表达。在类图中使用带三角箭头的实线表示,箭头从子类指向父类。实现(Realization):在类图中就是接口和实现的关系。这个没什么好讲的。在类图中使用带三角箭头的虚线表示,箭头从实现类指向接口。依赖(Depend

2017-08-09 11:10:14 311

原创 多线程使用的小错误

1.其中, func1和func2中都使用信号量myMutex,两个函数里面都是while死循环。错误现象:两个子线程老是没有执行完或不执行。代码如下:int main(){ myMutex = CreateMutex(...); //初始化 _beginthread(func1, 0 , 0); _beginthread(func2, 0 , 0); Clo

2017-07-12 14:12:17 250

转载 聚合 耦合

聚合:一个模块内部各成分之间相关联程度的度量。把聚合称之为内聚。要做到高聚合,一个模块仅完成一个独立的功能,模块内部不存在与该功能无关的操作或状态。耦合:模块之间相关联程度的度量。低耦合,就是将两个模块之间的关联尽可能的降低,一个模块发生变化对于其他模块的影响尽可能的小。转:点击打开链接

2017-01-16 23:00:08 628

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除