自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 资源 (1)
  • 收藏
  • 关注

原创 【c++ templates读书笔记】【5】模板实战

1、模板声明和模板定义如果不在同一个文件中,在另一个文件中使用模板时会出现链接错误。例子://Myfirst.h#ifndef MYFIRST_H#define MYFIRST_H#include#includeusing namespace std;templatevoid print_typeof(T const& x);#endif//Myfirst.cpp

2015-09-30 17:03:46 332

原创 【c++ templates读书笔记】【4】技巧性基础知识

1、关键字typename引入关键字typename是为了说明:模板内部的标识符可以是一个类型。当某个依赖与模板参数的名称是一个类型时,就应该使用typename。templateclass MyClass{ typename T::SubType * ptr; // typename说明SubType是定义于T内的一种类型,如果不使用typename,SubType会被认为是T的一

2015-09-27 13:36:54 574

原创 【c++ templates读书笔记】【3】非类型模板参数

对于函数模板和类模板,模板参数并不局限于类型,普通值也可以作为模板参数。但非类型模板参数是有限制的,只能是常整数(包括枚举值)或者指向外部链接对象的指针,浮点数、类对象和内部链接对象不允许作为非类型模板参数的。1、非类型类模板参数例子#includeusing namespace std;//Maxsize是一个非类型模板参数templateclass Stack{private

2015-09-26 13:35:45 396

原创 【c++ templates读书笔记】【2】类模板

1、类模板的声明template class Stack{ ...}2、在类模板内部,T可以像其他任何类型一样,用于声明成员变量和成员函数。template class Stack{private: std::vector elemes; // 存储元素的容器public: Stack(); // 构造函数 voi

2015-09-23 19:26:32 345

原创 【c++ templates读书笔记】【1】函数模板

1、定义函数模板:templateinline T const& max (T const& a, T const& b){ return a < b ? b : a;}解释:template表明了这是一个函数模板,指定了模板参数区域,typename表明了后面的参数是一个类型名, T是模板参数,它可以用来指定所有的类型,a和b是调用参数,位于模板函数名称后面,在一对()内进行声

2015-09-19 14:08:57 583

原创 【more effective c++读书笔记】【第6章】杂项讨论

条款32:在未来时态下发展程序未来式思维要加上一些额外的考虑:a、提供完整的类——即使某些部分目前用不到。当新的需求进来,你不太需要回头去修改哪些类。b、设计你的接口,使有利于共同的操作行为,阻止共同的错误。让类轻易地被正确运用,难以被错误运用。c、尽量使你的代码一般化,除非有不良的巨大后果。 “未来式思维”可增加代码重用性、加强其可维护性、健壮性,并促使在一个“改变实乃必然”

2015-09-11 19:30:47 325

原创 【more effective c++读书笔记】【第5章】技术(7)——让函数根据一个以上的对象类型来决定如何虚化(2)

四、自行仿真虚函数表格(使用非成员函数的碰撞处理函数)//GameObject.h#ifndef GAMEOBJECT_H#define GAMEOBJECT_Hclass GameObject{ //抽象基类public: virtual ~GameObject() = 0;};class SpaceShip : public GameObject{ //宇宙飞船类pub

2015-09-10 16:42:15 367

原创 【more effective c++读书笔记】【第5章】技术(7)——让函数根据一个以上的对象类型来决定如何虚化(1)

一个虚函数调用动作称为一个消息分派,如果某个函数调用根据两个参数而虚化就称为双重分派,根据多个函数而虚化称为多重分派。C++不支持双重分派和多重分派,因此我们必须自己实现。有以下几种方法:一、虚函数 + RTTI(运行时期类型辨识)//GameObject.h#ifndef GAMEOBJECT_H#define GAMEOBJECT_Hclass GameObject{ //抽象

2015-09-09 18:29:55 391

原创 【more effective c++读书笔记】【第5章】技术(6)——Proxy classes(代理类)

“用来代表其他对象”的对象被称为proxy objects,用来表现proxy objects者,称为proxy classes(代理类)。一、实现二维数组//Array2D.h#ifndef ARRAY2D_H#define ARRAY2D_H//代理类templateclass Array1D{public: Array1D(int d) :dim(d),data1d(n

2015-09-08 16:02:58 432

原创 【more effective c++读书笔记】【第5章】技术(5)——Reference counting(引用计数)(2)

三、引用计数基类和智能指针实现的String类//RCObject.h#ifndef RCOBJECT_H#define RCOBJECT//引用计数基类class RCObject{public: void addReference();//增加引用计数 void removeReference();//减少引用计数,如果变为0,销毁对象 void markUnshareab

2015-09-07 16:37:13 809

原创 【more effective c++读书笔记】【第5章】技术(5)——Reference counting(引用计数)(1)

一、非引用计数实现的String类#ifndef STRING_H#define STRING_H#define _CRT_SECURE_NO_WARNINGS#includeclass String{public: String(const char* initValue = nullptr);//构造函数 String(const String& rhs);//拷贝构造函数

2015-09-06 11:13:07 852

原创 【more effective c++读书笔记】【第5章】技术(4)——Smart Pointers(智能指针)

一、类似C++标准程序库提供的auto_ptrtemplate的智能指针//Smart.h#ifndef SMART_H#define SMART_Htemplateclass SmartPtr{public: SmartPtr(T* realPtr = 0); //构造函数 ~SmartPtr();//析构函数 SmartPtr(SmartPtr& rhs); //拷贝构

2015-09-05 14:02:10 447

原创 【more effective c++读书笔记】【第5章】技术(3)——要求(或禁止)对象产生于heap之中

一、要求对象产生于heap之中方法:让析构函数成为private,构造函数为public。然后导入一个伪的析构函数,来调用真正的析构函数。但是它也妨碍了继承和内含。例子://UPNumber.h#ifndef UPNUMBER_H#define UPNUMBER_H#includeclass UPNumber{public: UPNumber() :value(0) {

2015-09-04 14:47:51 383

原创 【more effective c++读书笔记】【第5章】技术(2)——限制某个class所能产生的对象数量

一、允许零个对象每当产生一个对象时会有一个构造函数被调用,因此阻止某个类产出对象的最简单方法就是将该类的构造函数声明为private。例子:class CantBeInstantiated{private: CantBeInstantiated(); CantBeInstantiated(const CantBeInstantiated&); ....};二、允许一个对

2015-09-03 14:43:58 442

原创 【more effective c++读书笔记】【第5章】技术(1)——将constructor和non-member functions虚化

一、将constructor虚化1、例子:#include#include#includeusing namespace std;class NLComponent{public: NLComponent(){ cout << "NLComponent()" << endl; } NLComponent(const NLComponent&){ cout << "NLCom

2015-09-02 11:01:59 433

原创 【more effective c++读书笔记】【第4章】效率(3)

条款22:考虑以操作符复合形式(op=)取代其独身形式(op)1、确保操作符的复合形式(如operator+=)和其独身形式 (如 operator+ )之间的自然关系能够存在,一个好方法就是以前者为基础实现后者。例子:#includeusing namespace std;class Rational{public: Rational(int n = 0, int d =

2015-09-01 14:17:48 344

DOS教程.rar

DOS命令,教你怎么使用dos命令。在汇编中要学到,所以就上传了,方便大家学习

2012-09-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除