- 博客(43)
- 资源 (6)
- 收藏
- 关注
原创 opengl的学习网站
1、opengl wiki收集了大量opengl相关的信息、问题等。它是一个开放的平台,任何人都可以在上面提交信息,但应当是opengl相关的。网址:https://www.khronos.org/opengl/wiki/2、shadertoy有很多不错的着色器使用案例,可以对代码进行修改、调试。网址https://www.shadertoy.com/3、LearnOpenGL-CN也是很不错的学习地方,也有中文支持,讲解也很细致。https://learnopengl-cn.readthe
2020-08-06 15:09:38
893
原创 设计模式之模板模式(Template)
方法:定义操作中的骨架,而将一些步骤延迟到子类中实现;#include <iostream>using namespace std;class Base{public: virtual void method1() = 0; virtual void method2() = 0;};class A : public Base{public: void method1
2017-12-29 15:20:33
250
原创 设计模式之迭代模式(Iterator)
优点:提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示;template<class Item>class Iterator{public: virtual void first() = 0; virtual void next() = 0; virtual Item currentItem() = 0; virtual bool is
2017-12-29 14:11:44
317
原创 设计模式之备忘录模式(Memento)
作用: 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将改对象恢复到原先保存的状态。#include <iostream>#include <vector>using namespace std;//保存的信息class Memento{public: Memento(int vit, int att, int def) :_
2017-12-20 13:49:28
201
原创 设计模式之中介者模式(Mediator)
优点:允许我们公开一个统一的接口,系统的不同部分可以通过该接口进行通信,而不需要显示的相互作用; 适用场景:一个系统的各个组件之间看起来有太多的直接关系,这个时候则需要一个中心控制点,以便各个组件可以通过这个中心控制点进行通信;#include <iostream>#include <string>using namespace std;class Mediator;class Person
2017-12-07 17:31:57
165
原创 设计模式之策略模式(Strategy)
策略模式是指定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。使得算法可独立于使用它的客户而变化。也就是说这些算法所完成的功能一样,对外的接口一样,只是各自实现上存在差异。用策略模式来封装算法,效果比较好 “`include using namespace std;//抽象接口 class Algorithm { public: virtual void replace
2017-12-04 15:37:17
183
原创 设计模式之访问者模式(Visitor)
优点:易于添加那些目前尚未考虑到的方法(扩展功能) 缺点: 1)访问者角色不适合具体元素角色经常发生变化的情况。 2)访问者角色要执行与元素角色相关的操作,就必须让元素角色将自己内部属性暴露出来,这就破坏了元素角色的封装性。访问者和被访问的对象的耦合性很大。 3)元素与访问者之间能够传递的信息有限,这往往也会限制访问者模式的使用。(因为访问者不
2017-11-30 10:42:31
170
原创 osg获取纹理节点纹理方法
class TextureVisitor:public osg::NodeVisitor { public: TextureVisitor(); TextureVisitor(QString dirPath); void apply(osg::Node& node); void apply(osg::Geod
2017-11-28 18:09:56
3654
原创 设计模式之状态模式(State)
作用:一个对象的行为取决于它的状态, 并且它必须在运行时刻根据状态改变它的行为;#include <iostream>using namespace std;class War;class State{public: virtual void start(War *){} virtual void continued(War *){} virtual void end(
2017-11-28 18:06:56
176
原创 设计模式之命令行模式(Command)
优点: 1、容易设计出一个命令队列 2、可以设计出请求的撤销与重做 作用: 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作#include <iostream>using namespace std;#include <vector>//用来声明执行操作的接口class Command{public: virt
2017-11-22 16:44:34
648
原创 设计模式之观察者模式(Observer)
优点: 1、目标和观察者之间松耦合#include <iostream>#include <list>using namespace std;//观察者class Observer{public: virtual void update(int) = 0;};//目标class Subject{public: virtual void attach(Observe
2017-11-21 14:39:07
184
原创 设计模式之代理模式(Proxy)
1、远程代理 优点:逻辑与实现彻底解耦//接口class A{public: virtual ~A() = 0 {} virtual void request() = 0;};//业务执行者A1class A1 : public A{public: void request() { cout<<"A1 request"<<endl;
2017-11-16 15:13:34
187
原创 设计模式之外观模式(Facade)
优点:1)为复杂的子系统提供了简单接口 2)提高子系统的独立性 3)在层次结构中,可以使用Facade模式定义系统中每一层的接口#include <iostream>using namespace std;//子系统class A{public: void run(){cout<<"run A"<<endl;}};class B{pub
2017-06-30 15:00:46
208
原创 设计模式之享元模式(Flyweight)
优点:1)大幅度地降低内存中对象的数量#include <iostream>#include <vector>using namespace std;class FlyWeight{public: virtual ~FlyWeight(){} string getInstrinsicState(){return _state;} virtual void Operat
2017-06-30 14:39:56
183
原创 设计模式之组合模式(Composite)
优点:1)组合模式使基本对象组合成复杂对象,复杂对象继续组合,形成递归 2)组合模式可以让客户使用一致的组合对象和单个对象#include <iostream>#include <vector>using namespace std;//纯虚函数,只提供接口,没有默认的实现class Base{public: virtual void Operation(){
2017-06-29 17:51:21
218
原创 设计模式之装饰模式(Decorator)
优点:1)动态地给对象添加一些额外的职责 2)在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责#include <iostream>using namespace std;class Base{public: virtual void Operator() = 0;};class A : public Base{public: void
2017-06-29 16:12:49
228
原创 设计模式之适配器模式(Adapter)
优点:1)使用已存在的类,接口不符合要求 2)创建复用的类,该类可以与其它不相关的类协同工作#include <iostream>using namespace std;class Target{public: virtual void Interface() = 0;};class Adapter{public: void SpecificInter
2017-06-29 14:54:58
237
原创 设计模式之桥接模式(Bridge)
优点:1)将可能变化的部分单独封装起来,使得变化产生的影响最小 2)抽象部分和实现部分单独变动,并且每一部分的扩充都不会破坏桥接模式搭起来 的架子 缺点:1)结构比较复杂 2)抽象类的修改影响到子类#include <iostream>using namespace std;//操作系统class OS{public: virtu
2017-06-29 14:36:16
193
原创 QObject源码分析
/*QObject.h*/class Q_CORE_EXPORT QObjectData {public: virtual ~QObjectData() = 0; QObject *q_ptr; QObject *parent; QObjectList children; uint isWidget : 1; uint blockSig : 1
2016-05-22 10:08:33
1558
转载 c++面试题
1.new、delete、malloc、free关系delete会调用对象的析构函数,和new对应free只会释放内存,new调用构造函数。malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之
2016-05-11 10:19:12
718
原创 C++ 基础
1.当C++创建一个空类的时候,编译器会默认创建6个函数:构造函数,析构函数,赋值函数,拷贝函数,取址运算符,取址运算符constclass Empty{public:Empty{}~Empty(){}Empty(const Empty &){}Empty &operator=(const Empty &){}Empty *operator&(){}cons
2016-05-09 16:56:11
254
原创 C++学习曲线
C++缺点之一,是相对许多语言复杂,而且难学难精。许多人说学习C语言只需一本K&R《C程序设计语言》即可,但C++书籍却是多不胜数。我是从C进入C++,皆是靠阅读自学。在此分享一点学习心得。个人认为,学习C++可分为4个层次:第一层次,C++基础:挑选一本入门书籍,如《C++ Primer》、《C++大学教程》、或Stroustrup撰写的经典《C++程序设计语言》或他一年半前的新作《C+
2016-05-09 16:47:17
3416
1
转载 最全面的 C++ 资源、框架大全
http://www.codeceo.com/article/cpp-resource-framework.html
2016-05-09 15:50:42
383
原创 设计模式之原型模式(Prototype)
原型模式:优点:使用拷贝比new一个对象的开销要小代码示例:Prototype.h#ifndef PROTOTYPE_H#define PROTOTYPE_H/** *1、声明一个抽象基类,并定义clone()函数为纯虚函数。 *2、实例化各个子类,并且实现复制构造函数,并实现clone()函数 */class Resume{public:
2016-05-06 12:32:47
735
原创 设计模式之建造者模式(Builder)
建造者模式:优点:1.隔离了构建的步骤和具体的实现,为产品的具体实现提供了灵活性2.封装和抽象了每个步骤的实现,实现了依赖倒置原则3.封装了具体的步骤,减少了代码冗余缺点:1.要求构建的产品不能剧烈变化代码示例:Builer.h#ifndef BULIDER_H#define BULIDER_Hclass Builder{public:
2016-05-06 12:24:20
474
原创 设计模式之单例模式(Singleton)
单例模式(Singleton)优点:1.提供了对唯一实例的访问方法2.内存中只存在一个对象,节约系统内存3.允许可变数目的实例缺点:1.由于没有抽象层,因此扩展有很大的困难2.单例类的职责过重,在一定程度上违背了“单一职责原则”代码示例:Singleton.h#ifndef SINGLETON_H#define SINGLETON_Hc
2016-05-06 12:11:18
349
原创 设计模式之抽象工厂模式(AbstructFactory)
抽象工厂模式(AbstructFactory)优点:1.可以支持不同类型的产品,使得产品的灵活性更强2.可以很方便的一族中间的不同类型的产品缺点:结构过于臃肿,如果产品类型过大,就会难以管理代码实现:AbstructFactory.h#ifndef ABSTRUCTFACTORY_H#define ABSTRUCTFACTORY_H/*ProductA
2016-05-06 11:58:19
623
原创 设计模式工厂方法(FactoryMethod)
工厂方法:优点:基本与简单工厂一致,但是遵循封闭-开放原则,灵活性更强缺点:与简单工厂差不多代码实现:FactoryMethod.h#ifndef FACTORYMETHOD_H#define FACTORYMETHOD_Hnamespace FactoryMethod {/*Product*/class AbstrcutBase{public:
2016-05-06 11:42:48
293
原创 设计模式之简单工厂(SimpleFactory)
基本的设计模式分类:创建型模式:负责对象的创建结构型模式:处理类与对象之间的组合,可以解决继承依赖性的问题行为型模式:类与对象交互中的职责分配,可以解决组件间如何交互,隔离变化简单工厂模式(SimpleFactory)优点:1.隐藏了对象创建的细节,将产品延迟到子类中实现2.方便添加新的子类产品,只需要修改工厂类传递的值即可3.遵循依赖倒转的原则缺点:
2016-05-06 11:34:52
409
原创 获取目录下所有文件(C/C++)
#include #include #include void get_file_name_list(string path , list &file_list){ int count = 0; struct dirent* ent = NULL; DIR *pDir; char dir[512]; struct stat statbuf;
2015-12-29 10:43:42
450
原创 日志文件
test.hextern void writelog(QString name, QString msg);test.cppvoid writelog(QString name, QString msg){ QString date = QString("FileDataProcessor") +" "+ QDateTime::currentDateTime().toStri
2015-12-21 15:13:01
495
原创 Qt 5.3.2在周立功M3352开发板的移植记录
1.一般板子上都带有配套的交叉编译,没有的话,可以从网上下一个。交叉编译器的放在/opt/tools/arm-2011.03/bin2.到www.qt-project.org下载QT5.3.2的源代码qt-everywhere-opensource-src-5.3.2.tar.gz。3.解压到当前文件夹。tar xzvf qt-everywhere-opensour
2015-03-04 16:38:53
4686
转载 Qt StyleSheet样式表实例
在涉及到Qt 美工的时候首先需要掌握CSS 级联样式表。下面将通过几个例子来介绍一下怎样使用Qt中的部件类型设计。自定义的前台背景与后台背景的颜色:如果需要一个文本编辑器的背景变为黄色, 下面是代码行:qApp->setStyleSheet("QLineEdit { background-color: yellow }");针对一个对话框的内容中使用QLineEdit以及QLine
2014-11-15 17:26:18
9686
原创 qt分割字符串
QString x = "Nine pineapples";QString y = x.mid(5, 4); // y == "pine"QString z = x.mid(5); // z == "pineapples"
2014-10-17 10:55:39
1147
原创 qt5实现串口通信
源代码mainwindow.h#ifndef MAINWINDOW_H#define MAINWINDOW_H#include #include #include #include "mythread.h"namespace Ui {class MainWindow;}class MainWindow : public QMainWindow{
2014-10-17 10:39:03
2553
libffmpeg_3.4.2.r91261_msvc14.zip
2020-12-09
More Exceptional c++ 中文版
2018-09-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人