int类型表示无穷大的值 int类型的取值范围为 0xffffffff(-2,147,483,648) - 0x7fffffff(2,147,483,647)尽管0x7fffffff为int类型最大值,但一般不使用该值表示无穷大值;因为0x7fffffff不能满足“无穷大+有穷数 = 无穷大”,它会变成一个很小的负数。0x3f3f3f3f的十进制为1061109567,也是109的级别,和0x7fffffff在一个数量级,而且一般情况下,数据都是小于109的,0x3f3f3f3f加上一个小于109的数时,不会溢出,因此常用0x3
原型模式 - Prototype 定义: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。举例:学校要制造学生档案,同一个班的同学,大部分信息是相同的,可以先制作一份,填好相同信息,然后以其为原型,复制多份,再填写同学们不同的信息;这要比一份一份的填写,简便很多类图注:这里为了约束子类,将其抽象为clone函数;若无子类,实现拷贝构造即可。客户端#include "StudentInfo.hpp"i...
抽象工厂模式 - Abstract Factory 定义:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。举例:学校里需要制造一年级的语文书、数学书,二年级的语文书、数学书。源码地址...
设计模式简介 摘自“菜鸟教程”设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可...
开放封闭原则-Open Closeed Principle-OCP 定义: 对软件实体(类、模块、函数),扩展可以开放,修改应该封闭。优点:可维护可扩展可复用灵活性高举例:学校里有一名老师教语文// Teacher.hclass Teacher{public: void teach();};// Teacher.cpp#include "Teacher.h"#include <iostream>void Teac...
迪米特原则 - Least Knowledge Principle - LKP 定义: 一个类应该对其他类保持最少的了解。释义: 只有直接的朋友通信。直接的朋友:出现在成员变量,方法参数,方法返回值中的类。出现在局部变量中的类则不是直接朋友。举例:如校长想知道学校全体同学的名字,只需与各班主任沟通就行,无需与所有同学沟通学生类#include <string>class Student{public: Student(std::string na...
接口隔离原则 - Interface Segregation Principle - ISP 定义: 客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。释义:类依赖的接口,其含有的方法都是自己依赖的。使用时,注意以下几点:接口尽量小,但是要有限度。对接口进行细化可以提高程序设计灵活性是不挣的事实,但是如果过小,则会造成接口数量过多,使设计复杂化。所以一定要适度。为依赖接口的类定制服务,只暴露给调用的类它需要的方法,它不需要的方法则隐藏起来。只有专注地为...
依赖倒置原则 - Dependence Inversion Principle - DIP 定义:高层模块不应该以来低层模块,两个都应该依赖抽象抽象不应该依赖细节,细节应该依赖抽象核心思想:针对接口编程,不要对实现编程使用时,应遵循以下3点低层模块或高层模块尽量都要有抽象类,或者两者都有变量的声明类型尽量是抽象类使用继承时遵循里式替换原则举例:语文老师教语文可以有多种途径,如课堂上面对面、在线视频等教学方式接口,所有的教学方式实现该接口#include <...
里氏替换原则 - Liskov Substitution Principle - LSP 定义:子类可以扩展父类的功能,但不能改变父类原有的功能。有四层含义:子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法子类中可以增加自己特有的方法当子类的方法重载父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格举例:老师类已经含有了getName函数,而语文老师类重新定义了g...
单例模式(Singleton) 解释:保证一个类仅有一个实例,并提供一个访问它的全局访问点。举例: 一个班里只能有一个班主任,无论何时找班主任,都指向同一个人。班主任类HeadTeacher.h#pragma once// 班主任类class HeadTeacher{public: ~HeadTeacher(); // 访问唯一实例的接口 static HeadTeacher* getInstance()...
Qt5.9.7 移植到Hi3536,支持OpenGL和tsLib Qt 5.9为LTS版本软件下载http://download.qt.io/archive/qt/5.9/5.9.7/single/说明:zip为windows版; tar.xz为linux版解压软件 xz qt-everywhere-opensource-src-5.9.7.tar.xz tar -xf qt-everywhere-opensource-src...