- 博客(700)
- 资源 (26)
- 论坛 (3)
- 收藏
- 关注

原创 C++面向对象高级编程十九讲
文章目录0 背景1 内容0 背景因为本人的C++基础不是很扎实,很多面向对象的基本语法掌握的不是很熟练,导致写程序出错时,经常会犯错,于是就去网上找到了侯捷老师的C++课进行观摩学习。本文是在观看完侯捷老师的《面向对象高级开发》课程后一些笔记和心得。文中老师一直强调要养成写C++大气、正规、高效的编程方法,实际就是要培养良好的编程习惯。1 内容讲数标题第一讲防御式编程第二讲内联函数第三讲构造函数第四讲类第五讲常量第六讲参数传递第七
2021-04-01 22:51:23
18

原创 最好的C++入门书籍《Accelerated C++》 ——附全部课后习题答案以及学习心得
篇章目录1 内容简介2 作者简介3 心得与习题答案1 内容简介内容简介:《Accelerated C++ 中文版通过示例进行编程实践》系统介绍C++程序设计,是美国斯坦福大学的经典教材。从使用C++标准库中的高级抽象开始,使读者很快掌握编程方法。每一章都有很经典独特的例子以及非常到位的讲解,覆盖了C++更多领域的内容,从标准库容器、泛型算法的使用,到类的设计、泛型算法的设计,本书都进行了详细的...
2020-03-21 14:51:03
1142
2

原创 PAT甲【所有题目+解析+代码示例+总结】附带所有历年整体+讲解+代码
PAT (Advanced Level) Practice题目总结1001 A+B Format字符串处理1002 1002 A+B for Polynomials (25 分)简单模拟1003 Emergency (25分)——Dijkstra(邻接表、邻接矩阵)、Bellman_Ford、SPFA最短路径1004 Counting Leaves (...
2020-03-03 09:56:03
557

原创 如何面对死亡(困扰自己最大的一个问题,需要用一生来作答,随着自己的成长不断更新)
学会很好地生活就是学习如何能够很好地死去。伊壁鸠鲁曾提出,我们死后「不存在」的状态和出生之前一样。去想象我们生前和死后并无区别,去试图相信这样一个观念:人死之后一定是回到生前的状态了。每个人最基本的「波动影响」——每个人死后在分子水平上又将重新成为自然的一部分,重新为未来的世界添砖加瓦。追求简单,活在当下,开始向新生过渡,为葬礼做准备引用书中的一句话:“如果每天的生活没有任何压力,...
2019-10-24 12:58:52
279

原创 PAT乙【所有题目+解析+代码示例+总结】附带所有历年整体+讲解+代码
题目总结1001总结1002 写出这个数 (20 分)总结1003总结1004总结1005 继续(3n+1)猜想 (25 分)总结1006总结1007总结1008 数组元素循环右移问题 (20 分)总结1009 说反话 (20 分)总结1010 一元多项式求导 (25 分)总结1011 A+B 和 ...
2019-03-16 22:48:34
437

原创 蓝桥杯C++A、B组【所有题目汇总+解析+代码实例+总结】第三届~第十届
第九届蓝桥杯C++A组C++B组1,分数1,第几天2,星期一2,明码3,乘积尾零3,乘积尾零4,第几个幸运数4,测试次数5,打印图形5,快速排序6,航班时间6,递增三元组7,三体攻击7,螺旋折线8,全球变暖8,日志统计9,倍数问题9,全球变暖10,付账问题10,乘积最大总结归纳总结归纳第八...
2019-03-16 22:06:37
2469

转载 20几岁,你的存款有多少?
看到这个标题,很多人的第一反应可能是,开什么玩笑,20几岁我才刚毕业,能有多少存款。 这个标题是去年我在一个公众号上看到的一个话题,作者发了一篇这样的推文,内容只有这几个字:“20几岁,你有多少存款?”为的是征集广大读友的答案。 刚开始看到这个话题,我和大多数人的反应也是一样,觉得考虑到存款多少的问题,至少也应该在工作了几年奔三的时候。 然而,当我看到网友对这个话题的评论后...
2019-02-11 20:38:24
306

转载 如果你到了25岁,还没到30岁。——李开复
如果你到了25岁,还没到30岁。——李开复如果你已经过了25岁但还不到30岁的话,你必须找到除了爱情之外,能够使你用双脚坚强站在大地上的东西。你要找到谋生的方式。现在考虑不晚了。我从来不以为学历有什么重要,天才都不是科班,但,不是科班,连龙套都跑不了。你必须把那些浮如飘絮的思绪,渐渐转化为清晰的思路和简单的文字。不要琐碎,无病呻吟。不要想到什么就写。不要流连于小感伤和小感动。我要你相...
2019-02-11 20:18:22
268
原创 C++2.0(C++11/14)大讲堂
文章目录0 背景1 内容0 背景因为C++11、14、17等相对与C++98来说,发生了巨大的改变,比如右值引用、可变模版参数、自动化类型推导、lambda、智能指针、tuple、Initialization_list等。可以说如果不了解C++2.0,可能看到这些特性编写的程序,就仿佛看到一门新语言一样。这些新的特性,并没有使得程序变得更加复杂,反而是使得程序更容易编写(如可变模版,可传递不限定的参数个数),并且提升了程序的效率(如右值引用,减少参数拷贝的时间消耗)。因此我觉得很有有必要了解并使用这些特
2021-04-15 23:38:47
6
原创 空指针使用nullptr、NULL还是0—————C++2.0第一讲
0 结论避免在整型和指针类型间重载,尽量使用nullptr代替空指针。1 nullptr、NULL和0一般情况下,人们经常习惯于使用0或NULL来代指空指针,这容易导致歧义或者程序编译错误。例如:下面的代码中,f(NULL)会导致歧义,使得编译器不知道调用哪个函数。#include <iostream>using std::cout; using std::endl;void f(void*){ cout<<"f(void*)"<<endl;}
2021-04-15 23:35:18
19
1
原创 解决Mac下使用python绘图出现中文乱码的情况
文章目录0 结果1 解决方法0 结果1 解决方法使用代码:import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['Arial Unicode MS']原理:Arial Unicode MS为Mac自带的字体,可以显中文。
2021-04-15 22:41:53
3
原创 C++通用引用计数类/句柄类/指针类【智能指针(share_ptr)、右值引用】————附带详细代码
文章目录0 背景1 讲解2 完整代码示例0 背景1 讲解2 完整代码示例#include <iostream>using std::cout; using std::endl;#include <vector>#include <stdexcept>class Core;class Derive;template <typename T>class ReferenceHandle{public: ReferenceHandl
2021-04-15 20:54:23
5
原创 当前标识(IIS APPPOOL\33)没有对“C:\Windows\Microsoft.NET\Framework64\4.0.30319\Temporary ASP.NET Files”的写访问权
文章目录0 错误1 解决0 错误问题重现:当前标识(IIS APPPOOL\DefaultAppPool)没有对“C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files”的写访问权限。1 解决此问题为在使用Windows的IIS搭建服务器时,遇到的问题。在网上尝试了各种解决方法后,终于找到了一个可以解决问题的方法,以管理员身份运行命令端,执行:C:\Windows\Microsoft.NET\Framewo
2021-04-08 23:56:24
10
原创 Qt 在Windows/Mac/Android下使用日志——————附赠完整代码和示例
文章目录0 背景1 Android环境下1.1 控制日志输出1.2 查看日志2 windwos/Mac0 背景一般情况下,我们在使用编译器运行软件的情况下,都可以打印出调试信息,但是如果是发布后的软件,就不能在编译器上看到调试、出错等日志信息,于是就要通过其他方法查看日志信息,一种比较好的方法,就是把软件日志输出到文件中,这样我们就可以通过文件查看。1 Android环境下结果:这是在编译器中打印的调试的信息:下面为使用adb查看MyRatailLog的日志信息:1.1 控制日志输出控制
2021-04-06 20:44:32
12
原创 python使用自己的代码模块或贡献自制项目(PYPI社区)——————附赠完整方法
文章目录0 结果1 方法2 卸载0 结果如果想使用自己创建的模块或者贡献自己的代码模块,就可能需要用到此文的内容。内容非常简单,python对贡献代码如此友好,我觉得是它社区发展的非常好的一个重大原因。1 方法1,新建一个文件夹,把自己的python代码放入其中,2,新建一个setup.py文件,在其中写入自己的信息,例如:from distutils.core import setupsetup( name = 'testInstall', version = '1
2021-04-05 22:28:25
15
原创 python快速入门—————附完整示例代码
文章目录0 背景1 基本数据结构0 背景因为项目涉及到做数据分析,因此需要用到python,所以借此机会学习了一些基本的python语法,学习使用的书籍为《Head first of python》,该书以实际的小项目为指引,从中穿插各种基本语法,学习起来也不枯燥。1 基本数据结构变量不需要声明类型,编译器会自己做类型推导。list(列表):特点:可以存储任何类型的数据[]操作:sch = []sch.append("中科大") # 追加到末尾sch.extend("南大", "浙大
2021-04-05 21:56:57
9
原创 configure: error: Valgrind works on Darwin 10.x, 11.x, 12.x, 13.x, 14.x, 15.x, 16.x and 17.x (Mac OS
文章目录0 错误重现1 解决0 错误重现1 解决因为想在mac下利用Qt配合Valgrind进行内存泄漏的检查,所以在官网下载了Valgrind,并进行了解压,使用./config获得makefile文件,结果报错了,提示不支持当前的mac版本,网上查阅了大量的资料显示目前mac版本的Valgrind还在实验阶段,虽然可以安转使用,但是还存在各种缺点,比如一直会曝内存泄漏,所以果断放弃,使用linux下安转使用Valgrind,安装命令如下:sudo apt-get install valgrin
2021-04-03 08:32:36
23
原创 第十九讲 虚函数之虚指针、虚表—————面向对象高级开发
1 虚函数之虚指针、虚表继承中的虚函数的继承,就是虚函数的调用权。下面的表中,例如A中有虚函数,因此类A的内存中,有一个虚指针(vptr),然后虚指针指向虚表(vptr),虚标中存储着函数的地址。...
2021-04-01 22:50:36
10
原创 第十八讲 不同类(指针类/仿函数)—————面向对象高级开发
1 不同类1.1 pointer-like class(仿指针)重载*、->运算符函数。#include <iostream>#include <cstdlib>template <typename T>class Share_ptr{public: Share_ptr(T* p):px(p){} T& operator*() const{ return *px;} T* operator->() const{
2021-04-01 22:48:19
6
原创 第十七讲 开始编写代码前的设计—————面向对象高级开发
1 开始编写代码前的设计1,考虑传入的参数时否可以是&(左值),是否用const(不会修改传入的值);传入&类型参数:只能是左值传入const &类型参数:可是左值或者右值(临时对象)&类型参数不能是右值的原因:传&的意图是改变对象值,但是传递右值时,编译器会生成一个临时匿名对象,让&类型参数指向它(这些临时匿名对象只会在函数调用期间存在,随后编译器便将它删除),因此不能做到更改值的意图,C++为了阻止这种情况发生,便在这种情况下禁止创建临时变量;
2021-04-01 22:45:36
5
原创 第十五讲 三大面向对象关系(复合、委托、继承)—————面向对象高级开发
1 三大面向对象关系(复合、委托、继承)1.1 composition(复合)关系:has-a1,构造关系:由内到外2,析构关系:由外到内例如:#include <iostream>class Son{public: Son(){std::cout<<"Son construction"<<std::endl;} ~Son(){std::cout<<"Son destroy"<<std::endl;}};
2021-04-01 22:42:00
9
原创 第十四讲 命名空间—————面向对象高级开发
1 命名空间1.1 意义和用法为了区分不同库中相同名称的函数、类、变量,使用了命名空间即定义了上下文。#include <iostream>namespace first_space{ void func() { std::cout << "first_space:func()"<<std::endl; }}namespace second_space{ void func() { std::cout
2021-04-01 22:39:05
5
原创 第十三讲 静态成员变量/函数+静态全局/局部变量—————面向对象高级开发
1 静态成员变量/函数+静态全局/局部变量静态的作用:1,延长生命周期(局部变量)2,都默认初始化为0(全局或局部修饰的变量)3,隐藏功能(只对同一个源文件有效【同名的.h、.cpp】,避免命名冲突)1.1 静态成员变量/函数1,静态成员变量:同一个类中只有一份,多个类共用一个;2,静态成员函数:函数内没有this指针,只能改变静态变量的值(因为静态成员函数属于整个类,在类实例化对象之前就已经分配空间了,而类的非静态成员必须在类实例化对象后才有内存空间),用于配合静态变量使用;静态成员函
2021-04-01 22:35:58
4
原创 第十二讲 编译器下的new和delete内幕—————面向对象高级开发
1 编译器下的new和delete内幕1.1 技术内幕例子:#include <iostream>#include <cstdlib>class A{public: A(){std::cout<<"constructor:"<<static_cast<void*>(this)<<std::endl;} ~A(){std::cout<<"destory:"<<static_cast&l
2021-04-01 22:32:09
12
原创 第十一讲 防御式编程—————面向对象高级开发生命范围
1 生命范围在栈中:1,生命域在作用域({ })中的auto object(带有析构函数),作用域结束,会自动调用构造函数;全局数据段:1,static object(被放在)在作用域结束后仍存在,直到程序结束;2,在作用域外,也就是全局对象堆:1,使用new/new[]创建的对象(注意:一定要配合delete/delete[]使用),因为不会自动销毁(如果是父类,一般析构函数要声明为虚函数,为了方便子类在多态时调用)...
2021-04-01 22:30:24
3
原创 第十讲 Big Three(三位一体原则)—————面向对象高级开发
1 Big Three(三位一体原则)“三位一体原则”:如果类需要一个析构函数,那它同时可能也需要一个拷贝构造函数和一个赋值运算符成员函数。测试例子:#include <iostream>#include <cstring>class A{private: char* m_data;public: A ():m_data(nullptr){}//默认构造 A (const char* _data){//实参构造 //(不使用初始
2021-04-01 22:29:00
3
原创 第八讲 操作符重载—————面向对象高级开发
1 操作符重载(operate overloading)分类:成员函数/非成员函数。区别:只有非静态成员函数中有this指针。使用非成员函数的情况:1,符合以往的编程习惯;例如,如果使用内部操作符函数,则会造成使用方式与以往不同的情况:因为不能更改已有cout的成员操作符号函数,因此只能创建一个非成员函数。#include <iostream>#include <ostream>class A{public: A(int _data = 0):m_d
2021-04-01 22:24:02
2
原创 第七讲 友元—————面向对象高级开发
1 友元赋予其他函数或者类访问类内部protected或者private成员的访问权限,打破了类的封装。相同类class的各object互为友元。
2021-04-01 22:22:39
3
原创 第六讲 参数传递—————面向对象高级开发
1 参数传递两种形式:pass by value(值传递)/pass by reference(引用传递)1,建议能传引用的尽量都传引用(底层使用指针实现【32位或64位都是4个字节大小】),因此传递时比其他大部分变量都快(除了单个字符【一个字节】);2,不能使用引用传递的情况,当传递的值位局部变量时,无法传递引用;例如:#include <iostream>class A{public: A(int _data = 0):m_data(_data){}//默认实参
2021-04-01 22:21:01
4
原创 第五讲 常量—————面向对象高级开发
1 常量1.1 常量成员函数格式(下面的const):return-type functionName(param ) const{}作用:表示该函数不会改变成员变量的值。例如下面的例子,常量对象a只能调用常量函数,如果调用非常量函数,就意味着可能会改变对象中成员的值,因为会报错。#include <iostream>class A{public: A(int _data = 0):m_data(_data){} int print(){return m_da
2021-04-01 22:18:46
4
原创 第四讲 类—————面向对象高级开发
4 类类中数据一般都使用private,来封装数据,防止他人随意更改。如果需要提供读取功能,使用存取器函数,例如下面的getData函数。class A{public: int getData() const{return m_data;}private: int m_data;};不使用任何访问范围的关键词,默认为private...
2021-04-01 22:16:34
3
原创 第三讲 构造函数—————面向对象高级开发
1 构造函数(constructor)一般使用初始化列表(initialization list)来初始化参数。没有在初始化列表中的成员参数会被隐式初始化构造函数一般是声明为public,供他人创建,也有声明为private的,例如单例模式。class A{public: A(int _data):m_data(_data){}private: int m_data;};单例模式:class{public: static A& getInstance(){//调用函数
2021-04-01 20:02:28
9
原创 第二讲 内联函数—————面向对象高级开发
1 内联函数(inline)inline:在类内定义的函数,都默认为内联函数,类外的函数,则需要在返回类型前添加inline。inline只是建议编译构建函数时,构建为内联的,具体是不是则由编译决定。inline作用:空间换时间,加快程序的运行速度。...
2021-04-01 20:00:50
10
原创 第一讲 防御式编程—————面向对象高级开发
1 防御式编程例如在定义头文件时,都使用#ifndef#define//...#endif为的就是防止头文件被重复包含。
2021-04-01 19:57:35
9
原创 Qt使用JNI调用Java代码—————附带完整示例
文章目录0 背景1 调用准备2 调用0 背景在开发Android应用时,有些功能无法使用Qt原生或C++来实现其功能,只能调用java代码来实现。因此就涉及到在Qt中调用java的问题。1 调用准备在.pro中加入下面代码,因此来提供对Android库的支持QT += androidextras两个重要的类:QAndroidJniEnvironment:实现JNI的环境,用于异常的检查和清除等功能;QAndroidJniObject:用于调用java方法2 调用QAndroidJniO
2021-03-26 00:09:25
12
原创 Qt Android自动更新————附赠代码和测试源文件
文章目录0 背景1 导入Android文件3 进行自动更新功能编写3.1 调用方法3.2 注意事项4 附赠单元测试文件0 背景因为项目涉及到使用Qt进行自动跟新,在网上的谷歌、百度、360搜索一番后,并且尝试了里面的各种方法,最后为没有成功。在同事的帮助下,完成了Android自动更新的功能,实现的答题思路为:使用Qt的JNI调用Android的java更新代码实现自动更新。最后成功实现了更新,这里提供给需要帮助的同学们。效果:1 导入Android文件1, 打开项目,在里面选择Create
2021-03-23 21:33:55
23
原创 Qt以管理员/非管理员方式打开另一个进程
文章目录0 背景1 使程序具有管理员权限2 以管理员权限打开应用3 启动非管理员权限的应用0 背景因为项目用到自动跟新,需要用主程序打开更新程序进行更新,更新完成后使用更新程序打开主程序。为了更新过程自然,因此不能使用管理员权限打开更新程序,否则会弹出对话框(是否以管理员权限打开应用),所以更新程序就是没有管理员权限的,但是主程序必须拥有管理员权限(启动时以管理员权限打开)才能直接(使用QProcess)打开其他不需要管理员权限的程序,而打开管理员权限的程序有需要调用windwos的系统API函数。经过
2021-03-18 12:53:56
26
原创 Qt在window系统下打印小票——————附带完整代码
文章目录0 背景1 打印方法1.1 直接调用打印设置界面进行打印1.2 直接打印,不出现打印设置界面2 打印类3 打印类的一些测试3.1 测试字体和上下间隙3.2 测试容纳字体的最大宽度4 彩蛋0 背景因为需要用到打印小票的功能,因此通过查询网上相关资料和自己动手实践整理出此文。希望对需要用到这方面的朋友有帮助。先放结果:为了打印这张小票,自己也打印了上百张小票,用来测试字体大小、间距、样式等。1 打印方法在pro文件中加入QT += printsupport #打印1.1
2021-03-14 18:18:04
15
原创 Qt通过post请求发送和拆分json数据(二)———附送完整源代码
文章目录0 背景1 发送json格式的数据1.1 进行post请求的类:1.1 使用post请求类2 发送json数据3 解析json数据0 背景因为项目要用到许多的post请求,因此查询了大量资料加上自己的实践,最后总结出了此文。之前也写过相同主题的文章,不过方法比较麻烦,需要通过调用json格式的数据来进行post请求,此文正是上文的优化。这里推荐几个好用的post请求的软件和网址,软件:Postmanjson数据解析网址1 发送json格式的数据1.1 进行post请求的类:.h#i
2021-03-14 13:05:12
43
QtTcpImage-master.zip
2020-04-19
QSetting操作ini文件(包括增删改查),自己封装了QSetting类
1969-12-12
Qt post请求发送和解析json数据完整示例,有完整的设置框架,可以发送和解析多个post请求
2021-03-14
590412 数据结构、算法与应用 C++语言描述 原书第2版——高清扫遍版带书签
2019-03-19
ACM国际大学生程序设计竞赛:题目与解读(完整高清带书签版本)
2019-03-19
OpenCV 3计算机视觉:Python语言实现——高清版带书签全书+源代码
2019-04-05
ACM国际大学生程序设计竞赛:算法与实现(高清完整带书签版)
2019-03-20
Qt的windows和mac版编译好的opencv源文件
2020-06-28
loginTest.zip
2020-04-20
Qt tableView中的代理继承重写paint函数绘制的图片,不会移动
发表于 2021-02-18 最后回复 2021-02-18
C++使用win32API调用报错
发表于 2020-08-22 最后回复 2020-08-22
C++/qt调用dl报错
发表于 2020-08-22 最后回复 2020-08-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人 TA的粉丝