- 博客(27)
- 资源 (51)
- 收藏
- 关注
原创 static 与 extern
static关键字的作用: (1)修饰局部变量 一般情况下,对于局部变量是存放在栈区的,并且局部变量的生命周期在该语句块执行结束时便结束了。但是如果用static进行修饰的话,该变量便存放在静态数据区,其生命周期一直持续到整个程序执行结束 ,但是其作用域并没有改变,其仍然是一个局部变量,作用域仅限于该语句块。 在用static修饰局部变量后,该变量只在初
2017-05-23 14:14:20 1846
转载 type_traits
动机使用traits的动机一般有三种,分派、效率、使某些代码通过编译。 分派下面有一个模板函数,假设一个动物收容组织提供了它,他们接受所有无家可归的可怜的小动物,于是他们向外界提供了一个函数接受注册。函数看起来像这样: template // T表示接受的是何种动物void AcceptAnimals(T animal){... //do somethin
2017-05-19 18:21:22 721
原创 typename的作用
#include "stdafx.h"#include using namespace std;/*用法一: 声明template参数时, 前缀关键字class和typename可以互换; 用法二: 使用关键字typename标识嵌套从属类型名称, 从属名称在class内呈嵌套装, 如T::const_iterator ; */
2017-05-19 15:07:24 2199
原创 nullptr
/*C++11,其中有一个是新的关键字nullptr如果我们的编译器是支持nullptr的话,那么我们应该直接使用nullptr来替代NULL的宏定义。正常使用过程中他们是完全等价的。*/#include "stdafx.h"#include #include using namespace std; class A
2017-05-19 10:55:28 2476
原创 变量的声明与定义
变量定义(definition):用于为变量分配存储空间,还可为变量指定初始值。程序中,变量有且仅有一个定义。 定义也是声明:当定义变量的时候我们声明了它的类型和名字。 变量声明(declaration):用于向程序表明变量的类型和名字。 变量可以声明多次 extern
2017-05-19 10:30:56 725
转载 C++内部链接与外部链接
你曾经碰到的问题: 1.为什么有时会出现aaa已在bbb中重定义的错误?2.为什么有时会出现无法解析的外部符号?3.为什么有的内联函数的定义需要写在头文件中?4.为什么对于模板,声明和定义都要写在一起?编译单元 什么是编译单元呢?简单来说一个cpp文件就是一个编译单元。编译单元:当一个c或cpp文件在编译时,预处理器首先递
2017-05-18 16:26:21 1893 1
转载 C++编译与链接过程
C++程序的过程:源程序->预处理->编译和优化->生成目标文件->链接->可执行文件 1.预处理C++的预处理是指在C++程序源代码被编译之前,由预处理器对C++程序源代码进行的处理。这个过程并不对程序的源代码进行解析。这里的预处理器(preprocessor)是指真正的编译开始之前由编译器调用的一个独立程序。 预处理器主要负责以下的几处
2017-05-18 15:09:28 2086
原创 指向类成员变量的指针int A:: * p
#include "stdafx.h"#include #include using namespace std; class A{public : double o; //制造一个偏移量 int a;};class B: public A{public: int b;}; in
2017-05-18 11:26:15 3874
原创 using 模板的别名
#include "stdafx.h"#include #include using namespace std;/* template (模板)是用来产生 template class (模板类型,是类型)。在标准 C++,typedef 可定义类型的别名,但是不能够使用 typedef 来定义模板的别名。 为了定义模板的别名,C++11 将会
2017-05-17 16:25:39 2088
原创 integral_constant定义编译期常量
#include "stdafx.h"#include #include using namespace std;/*integral_constant类 是所有traits类的基类,分别提供了以下功能:value_type 表示值的类型value表示值type 表示自己, 因此可以用::type::value来获取值true_typ
2017-05-17 15:49:50 3575
原创 C++中的operator的两种用法
#include "stdafx.h"#include #include using namespace std ; /*C++中的operator主要有两个作用,第一种: 操作符的重载,一是自定义对象类型的隐式转换。 第二种: 自定义对象类型的隐式转换 使用格式 operator 类型() */class
2017-05-17 15:29:33 4217
转载 constexpr常数表达式
关键字 constexpr 于 C++11 中引入并于 C++14 中得到改善。它表示常数表达式。与 const 相同,它可应用于变量,因此如果任何代码试图修改该值,均将引发编译器错误。与 const 不同,constexpr 也可应用于函数和类构造函数。 constexpr 指示值或返回值是常数,并且如果可能,将在编译时计算值或返回值。1 constexpr 变量const
2017-05-17 14:14:22 3040
原创 DSL(domain specific language )
领域专用语言(domain specific language / DSL) 首先给出Martin对DSL的定义: Domain-Specific Language:A computer programming language of limited expressiveness focused on a particular domain 在
2017-05-16 11:48:57 11278 1
原创 Schema和DTD的区别
Schema是对XML文档结构的定义和描述,其主要的作用是用来约束XML文件,并验证XML文件有效性。DTD的作用是定义XML的合法构建模块,它使用一系列的合法元素来定义文档结构。它们之间的区别有下面几点: 1、Schema本身也是XML文档,DTD定义跟XML没有什么关系,Schema在理解和实际应用有很多的好处。 2、DTD文档的结构是“平铺型”的,如果
2017-05-16 11:34:21 2512
原创 XML文档类型定义---DTD文档
DTD的作用XML文档是一种元标记语言,即一种定义标记语言的语言。在XML中可以创建新的标记语言,这些新的标记语言(也叫标记集)要通过文档类型定义(Document Type Definitions,DTD)来定义。DTD文档是这些新的标记语言的法律性文档。如果XML文档的语法符,DTD的定义和规定,那么就称为一个合法的XML文档,否则就是非法的XML文档。合法的XML文档在实际应用中的地
2017-05-16 11:20:32 1924
原创 XML文档类型定义---XML Schema
Schema概述XML Schema是2001年5月正式发布的W3C的推荐标准,经过数年的大规模讨论和开发如今终于尘埃落定,成为全球公认的XML环境下首选的数据建模工具。 使用DTD虽然带来较大的方便,但是,DTD存在一些缺陷:一是它用不同于XML的语言编写,需要不同的分析器技术。这增加了工具开发商的负担,降低了软件瘦身的可能性,此外开发人员需要多学一门语言及其语法。而XM
2017-05-16 11:18:17 1715
转载 Builder建造者模式
建造者模式的概念:将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以有不同的表示。 嗨,这个概念看起来总是这么深奥难懂。大概的意思,就是一套的构建过程可以有不同的产品(表示)出来。这些产品(表示)都按照这一套的构建过程被生产出来。 建造者模式通常包括以下这几个角色: 1、Builder:给出一个抽象接口,规范建造者对于生产的产品的各个组成部分的建造。
2017-05-15 15:02:38 1907
转载 Bridge桥接模式
将抽象(Abstraction)与实现(Implementation)分离,使得二者可以独立地变化。桥接模式号称设计模式中最难理解的模式之一,关键就是这个抽象和实现的分离非常让人奇怪,大部分人刚看到这个定义的时候都会认为实现就是继承自抽象,那怎么可能将他们分离呢。《大话设计模式》中就Bridge模式的解释:手机品牌和软件是两个概念,不同的软件可以在不同的手机上,不同的手机可
2017-05-15 11:50:01 778
原创 动多态和静多态
#include "stdafx.h"#include using namespace std; /* 动多态和静多态为不同的C++编程idioms提供了支持: (1)通过继承实现的多态是绑定的和动态的: 1. 绑定的含义是:对于参与多态行为的类型,它们(具有多态行为)的接口是在公共基类的设计 中就预先确定的(有时候也把绑定这个概念称为入侵的或者插入的
2017-05-12 17:35:33 644
原创 全特化终结这个递归模板
#include "stdafx.h"#include using namespace std; templateclass A { private:A impl; // 有个问题: List 之中包含另一个 List 成员, 构成递归声明public : void test(T* p){ impl.test(p);
2017-05-12 15:06:49 365
原创 特化类模板成员
#include "stdafx.h"#include using namespace std;#include templateclass A { public: static int a; void print() const{cout }}; //-------------------------
2017-05-12 10:48:31 476
原创 类模版静态成员初始化
/*静态数据成员分为两种情况,第一种不依赖模版类型参数,第二种依赖模版类型参数。对于第一种存在两种初始化方式:1范化定义, 2特化定义 对于第二种只有一种初始化方式: 特化定义 下面顺便展示内部模板类的演示:*/#include "stdafx.h"#include using namespace std; #include
2017-05-11 16:41:35 1378
转载 RAID详解
一.RAID定义RAID(Redundant Array of Independent Disk 独立冗余磁盘阵列)技术是加州大学伯克利分校1987年提出,最初是为了组合小的廉价磁盘来代替大的昂贵磁盘,同时希望磁盘失效时不会使对数据的访问受损 失而开发出一定水平的数据保护技术。RAID就是一种由多块廉价磁盘构成的冗余阵列,在操作系统下是作为一个独立的大型存储设备出现。RAID可以充分发 挥出多
2017-05-10 15:50:37 395
原创 顶层const 与 底层const
#include "stdafx.h"#include using namespace std;/*顶层const(top-level const)表示指针(或引用)本身是个常量。底层const(low-level const)表示指针指的对象是一个常量。一般当说到顶层或底层const的时候都是指针或者引用类型的,因为普通类型的const只能是底层的。
2017-05-05 09:16:54 558
原创 模板类的继承
#include "stdafx.h"#include #include using namespace std; //-----------------------------普通类继承模板类--------------------------------------templateclass A { public:T a;A(){
2017-05-04 11:53:17 325
原创 移动构造、移动赋值函数
#include "stdafx.h"#include #include using namespace std; #define STR_NULL( str) ( str!=NULL ? str : "NULL" )/*std::move(t) 负责将表达式 t 转换为右值,使用这一转换意味着你不再关心 t 的内容,它可以通过被移动(窃取)来
2017-05-02 16:38:07 2230
原创 自己写的String类,很基础!!!
#include "stdafx.h"#include #include using namespace std; #define STR_NULL( str) ( str!=NULL ? str : "NULL" ) class String { public:String(const char* str = NULL);
2017-05-02 15:13:57 461
UGUI Super ScrollView 最新版2.3.2
2019-02-23
openGL的实用工具包 GLUT库
2011-10-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人