- 博客(75)
- 收藏
- 关注
原创 C++ primer学习笔记——p39-p54
1.赋值与初始化初始化不同于赋值,初始化是创建变量并临时赋予其一个初始值,而赋值是把对象当前值擦除,而以一个新值来替代。 -------《C++ Primer 第五版》p39定义在函数体内的内置类型对象如果没有初始化,则其值为定义。类的对象如果没有显式的初始化,则其值由类决定。-------《C++ Primer 第五版》p40代码1.1 定义在函数体内的内置类型没有初始化#include <iostream>using namespace std;...
2021-01-07 17:56:40
273
原创 list<T> it报错解决
报错报错原因https://blog.csdn.net/pb1995/article/details/49532285报错代码template <typename T>void printList(const list<T>& a){ list<T>::iterator it; for(it = a.begin(); it != a.end(); it++){ cout << *it << end.
2020-12-25 13:49:23
1004
原创 cocos2d-x源码剖析-3-贴身女仆PoolManager
PoolManager上一节我们说Cocos2d是一颗大树的话,Ref类就是这棵大树的根,那么为了这颗大树的健康我们需要给它浇水除虫,在程序中,这些繁重的工作都要交给贴身女仆PoolManager去做。PoolManager是Cocos2d最最要的内存池管理类,它管理着AutoreleasePool内存池,它可以将垃圾资源释放,提高整个程序的性能。class CC_DLL Poo...
2020-03-17 17:02:48
327
原创 cocos2d-x源码剖析-2-万物皆可Ref
Ref类如果把Cocos2d比喻为一颗大树,那么Ref类可以说是这颗大树的根,Cocos2d中大部分类的源头都是Ref类,也就是说Ref是一个祖先类。它的主要作用是引用计数资源管理器,有点像shared_ptr。我们把其中最重要的代码截出来,如下所示。class Ref{public: void retain(); void release(); Re...
2020-03-16 15:49:34
333
原创 cocos2d-x源码剖析-1-主框架解析
自动生成项目在vs2017环境下新建项目后,可以在解决资源管理器看到四个文件夹,如下图所示。我们主要关注第一个和第二个文件夹。第一个文件夹展开后是cocs2d为我们自动生成的项目文件,第二个文件夹是cocs2d-x的源码目录,当然这些都是源码路径的链接。现在来看看第一个自动生成的项目文件。src目录下存储的是头文件以及其实现,在win32文件里面放着项目的主函数。AppDe...
2020-03-15 15:18:04
1145
2
原创 c++11多线程并发编程(2) ——传参安全
前话还记得上一节中main线程与子线程共同打印数据时候的那个运行结果吗。你一定会很奇怪这个结果,我分明写了回车符的打印为什么有的语句没有打印回车符呢?这就涉及到操作系统在运行多线程时候的机制问题。多线程的运行机制在多线程程序运行的时候并不会等待一个主线程的语句执行完再执行子线程的语句,相反也不会等待一个子线程的语句执行完再执行主线程的语句,而是二者抢占式执行,谁抢到...
2019-12-24 12:44:18
578
1
原创 C++内存管理(未完...)
本文代码中出现的类class Complex{ public: int num; Complex(int _num) : num(_num){} Complex(){} ~Complex(){}};四种常用内存申请方式 //--------四种内存申请方式---------- void* p1 = malloc(512); /...
2019-12-17 20:05:27
225
原创 std::bind的参数明明是右值引用,为何它可以接受各种引用类型
std::bind相信你已经了解或者听说过std::bind这个函数,它可以将函数与参数绑定,实现延迟执行的功能。void print(int& a) { std::cout << a << std::endl;}int main() { int a = 5; auto myPrint = std::bind(print, a);...
2019-12-16 17:12:15
1427
原创 c++11多线程并发编程(1) —— std::thread
std::threadstd::thead是c++11用来创建线程的类,被定义在<thread>头文件。(专业的介绍请戳在这里:https://zh.cppreference.com/w/cpp/thread/thread)使用std::thread创建一个新线程std::thread myThread(函数名,函数参数...)这个传入的参数和std::bind...
2019-12-09 17:33:54
779
原创 C++左值右值的基本解释
左值右值什么是左值?什么是右值?左边的值和右边的值?不不不,这样不全面,先给你一个浅显的解释吧,左值就是可以被赋值的类型,右值就是不可以被赋值的值。跟着下面的例子来一探究竟吧。最简单的左值右值int a = 2;这个代码中a位于等于运算符左边,数值2位于等于运算符右边,所以a是左值,2是右值。问题来了:那我要是把2放在左边,2是不是就成左值了呢?刚入门的c语言程序员都...
2019-11-23 19:19:21
1133
1
原创 学习STL源码遇到的C++新知识(三)可变参数
写在前面在array类源码看到这样一段代码template<class _First, class... _Rest> array(_First, _Rest...) -> array<typename _Enforce_same<_First, _Rest...>::type, 1 + sizeof...(_Rest)>;于是决...
2019-11-18 22:51:35
924
1
原创 学习STL源码遇到的C++新知识(二)方法前的宏
在STL array类源码中有以下一个方法,我们暂且不管它的作用是什么,我们重点关注这个方法前的宏_NODISCARD _CONSTEXPR17 iterator begin() noexcept { // return iterator for beginning of mutable sequence return (iterator(_Elems, 0)); }_CON...
2019-11-14 09:12:10
675
原创 学习STL源码遇到的C++新知识(一)
1.#pragma pack设置字节对齐系数 ,用法如下#pragma pack(push, length)//保存原来对齐大小,并设置对齐大小,length是一个正整数一般为2^n class....{} #pragma pack(pop) //恢复原本对齐大小具体用法写在了这篇博客:https://blog.csdn.net/qq_40238526/article...
2019-11-12 13:08:56
1701
1
原创 #pragma pack
用法#pragma pack是C/C++里面设置字节对齐方式的预编译函数解释先看下面代码:#include <iostream>using namespace std;class test { char m1; float m2; char m3;};int main(){ test t; cout << sizeof(t);...
2019-11-10 21:02:23
600
原创 c++设计模式(二)Strategy策略模式
动机在软件构建的过程中,某些对象使用的算法可能多种多样,经常改变,如果将这些算法都编码到对象中,将会使对象变得异常复杂;而且有时候支持不使用的算法也是一个性能负担。 如何在运行时根据需要透明地更改对象的算法?将算法与对象本身解耦,从而避免上述问题?示例如果有一个税法计算的类,如下:#ifndef SALARSORDER_H#define SALARSORDER_He...
2019-11-03 20:55:35
365
原创 c++设计模式(一)模板方法
设计模式的学习方法:知道在什么时候,什么地方使用设计模式,比理解设计模式结构本身更加重要。设计模式的三阶段:不会设计模式 ---->滥用设计模式---->会用设计模式重构的关键技法: 静态--->动态 早绑定--->晚绑定 继承--->组合 编译时依赖--->运行时依赖 紧耦合--->...
2019-11-03 18:27:17
436
原创 C++大学课程作业
14.6-14.9#include <fstream>#include <iostream>#include <string>int main(int argc, const char* argv[]) { // open oldmast.dat for input std::ifstream inOldMaster("ol...
2019-10-20 13:09:15
967
2
原创 [Error] passing 'const Base' as 'this' argument of 'virtual void Base::print()' discards qualifiers
代码如下:#include <iostream>class Base{ public: virtual void print(){ std::cout << "Base print" << std::endl; }};class Derived : public Base{ public: virtual void print()...
2019-09-23 19:30:47
843
原创 DEV-CPP的安装方式(信院19级用)
下载文件之后会得到一个安装包,如下图或者是这样双击安装包 ,等待进入以后语言选择英语,点击OK点击I Agree直接点击next,其他都别动接下来是选择安装的文件夹,默认是C盘,你也可以点击Browse重新选择,然后点击Install等待安装完成完成点击finish,记得Run要勾选选择简体中文,然后点...
2019-09-22 20:06:10
1155
原创 QT文件对话框、QT色彩选择对话框、QT字体选择对话框
dialog.h#ifndef DIALOG_H#define DIALOG_H#include<QPushButton>#include<QLineEdit>#include<QFileDialog>#include<QGridLayout>#include<QDialog>class MyDialog : p...
2019-09-20 16:46:02
796
原创 Qt布局
参考自《Qt5开发及实例》(第4版)主编:陆文周1.分割窗口代码有注释很详细代码如下#include<QPushButton>#include<QApplication>#include<QSplitter>#include<QTextEdit>int main(int argc, char* argv[]){...
2019-09-18 23:43:30
467
原创 eclipse将JSP翻译为java代码的目录
D:\JeeCode\/*前面是工作目录*/.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\
2019-09-18 14:29:49
358
原创 代码自动生成工具1.0
现在可以生成变量KeyWords.h#ifndef _KEYWORDS_H_#define _KEYWORDS_H_#include<map>#include<vector>const enum WORDINDEX { ERROR = -1, INT, FLOAT, DOUBLE, CHAR, STRING, /*******/ F...
2019-09-06 17:12:52
219
2
原创 使用批处理配置Java环境变量
代码@echo offset /p m_path=input you path:setx /M JAVA_HOME "%m_path%"setx /M CLASSPATH .;%%JAVA__HOME%%\lib;%%JAVA_HOME%%\lib\tools.jarwmic ENVIRONMENT where "name='Path' and username='<syst...
2019-09-03 18:44:47
243
原创 std::function & std::bind
函数指针简介函数指针指向某种特定类型,函数的类型由其参数及返回类型共同决定,与函数名无关。int callWithMax(int a, int b)//函数定义这个函数的返回值是int,传入的两个参数也是int,所以这个函数的类型就是 int(int, int)类型,我们可以声明一个指向该函数的函数指针,声明如下:int (*p)(int, int)//此时还未初始化...
2019-09-03 16:29:44
263
1
原创 QLineEdit实例
源码#include<QApplication>#include<QWidget>#include<QLineEdit>#include<QCompleter>int main(int argc, char* argv[]){ QApplication app(argc, argv); QWidget w; ...
2019-09-03 10:10:45
520
原创 第一个QT程序
新建一个空项目添加一个c++文件HelloWorld.proSOURCES += \ main.cppQT += widgets gui这里的 “QT += widgets gui” 是导入相关的头文件,如果不写会出现“QApplication file not found”main.cpp/* 应用程序抽象类 ...
2019-09-03 09:44:44
269
原创 Effective C++ —— 条款02
条款02:尽量以const,enum,inline替换#defineconst替换#define这个条款的另一个意思就是使用编译器替换预编译器,我们知道#define的内容都发生在预编译时期,所以有时稍不留神就会出错。比如你写了下面这个代码:#define PI 3.1415PI这个记号可能从未被编译器看见,它可能在编译器处理源码之前就被预编译器移走了,而且如果因为...
2019-09-02 23:08:43
205
原创 c语言飞机大战(控制台 字符飞机大战)
先看看效果吧大一的时候做的,当时没有好的代码习惯,所以代码有点乱,代码直接复制就能用了,功能可以自行拓展#include <stdio.h>#include <stdlib.h>#include <conio.h>int main () { int life=6;//生命 int i,j/*循环*/,plane_x,plane_y/*...
2019-09-02 13:54:29
5339
8
转载 c++ iota()函数
本文转载自http://c.biancheng.net/view/681.html若有侵权请联系删除定义在 numeric 头文件中的 iota() 函数模板会用连续的 T 类型值填充序列。前两个参数是定义序列的正向迭代器,第三个参数是初始的 T 值。第三个指定的值会被保存到序列的第一个元素中。保存在第一个元素后的值是通过对前面的值运用自增运算符得到的。当然,这意味着 T 类型必须支持 o...
2019-08-12 21:36:03
3628
原创 virtual与多态-----虚析构函数、虚指针与虚表
目录实现多态析构函数与虚析构函数1.析构函数2.虚析构函数虚指针虚表virtual在c++中是用来声明虚函数的,它是c++实现多态的重要关键字。实现多态#include <iostream>class Base{ public: int a; virtual void fun1(){ std::cout ...
2019-08-10 21:46:02
315
1
原创 c++数据结构与算法(11)——二叉树(使用class实现)
二叉树在计算机科学中,二叉树是每个结点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。下图所示就是一个二叉树:当然它也有可能长这样二叉树相关术语1.树的结点(node):包含一个数据元素及若干指向子树的分支;2.孩子结点(child node...
2019-07-07 22:00:24
1744
原创 谈谈很多if if if if if和一串if else if else if else的区别
目录话题深入话题浅出总结话题深入昨天在写二叉搜索树的时候,写了下面一段代码,结果在插入三个以上节点的时候程序就会崩溃,代码如下:while(p){ q = p;//改变之前保存父节点 if(element.key == p->data.key) return false;//发生重复不可插入 if(element.key < p->da...
2019-07-04 12:54:34
339
原创 c++数据结构与算法(10)——链表(使用class实现)
目录链表的定义定义模板节点类定义链表类解释:List,Node,node->next,下一个节点(重点在node->next与下一个节点的区别)链表的插入操作(头插法)代码分析链表的删除操作代码分析反转链表代码分析两个链表的连接代码分析完整代码(含迭代器类,本文未说明)LinkList.hLinkList_tes...
2019-06-30 00:14:44
5182
原创 CentOS 7安装gcc,并编辑运行第一个c/c++程序(含vi编辑器的简单使用)
目录安装gcc创建第一个c/c++文件并运行c语言c++安装gcc使用yum安装yum -y install gcc gcc-c++ kernel-devel //安装gcc、c++编译器以及内核文件如果出现以下结果,说明没有登陆root用户通过su命令登陆root用户这时候出现以下安装界面...
2019-06-28 21:14:53
41410
19
原创 opencv换脸
#include <dlib/image_processing/frontal_face_detector.h>#include <dlib/image_processing/render_face_detections.h>#include <dlib/image_processing.h>#include <dlib/gui_widgets.h...
2019-06-22 14:44:45
1470
1
原创 c++数据结构与算法(9)——顺序循环队列
Queue.h#ifndef _MYQUEUE_H#define _MYQUEUE_H#include<iostream>using namespace std;template<class T>class Queue{ public: Queue(int len = 10); ~Queue(); bool IsEmpty() const;...
2019-06-20 21:11:19
180
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人