自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

转载 windows批处理

网址 https://wsgzao.github.io/post/windows-batch/比较全的介绍windows batch的资料

2016-08-20 14:43:07 283

原创 C++ Exceptional 有关const的用法

下面通过一个例子来解释const在C++中的用法:class Polygon{public: Polygon() : area_(-1) {} void AddPoint(const Point pt) { InvalidateArea(); points_.push_back(pt);

2016-03-26 19:28:48 281

原创 C++中有关数组的一些细节问题

今天读C++ primer发现其中讲数组的一章,有一些东西自己还不是很清楚,所以专门下一篇博客来总结一下数组里面的一些容易忘记的知识。 1. 首先看下面声明数组的几种方式有什么区别:int *ptr[10];int &refs[10] = /* */; errorint (*Parray)[10] = &array;int (&arrRef)[10] = arr;首先,第一个的意思是定义了

2016-03-25 16:13:45 920

原创 C++ Exceptional 有关auto_ptr使用需要注意的地方

auto_ptr是C++11之前标准库里带的一个通用的智能指针,但说实话很多人可能并不喜欢用这个东西,因为它有时会带来一些意想不到的bug,而正是auto_ptr的实现方式才导致了这些问题的产生,下面我详细叙述一下这里的前因后果。首先,作为一个智能指针对象,auto_ptr是没有引用计数的概念的,所以这就导致了一个问题: 当一个auto_ptr由另一个auto_ptr拷贝构造或者赋值的时候,这个时

2016-03-17 00:57:20 355

原创 C++ Exceptional 重载运算符new和delete时要注意的地方

首先看下面一段代码,找出代码中存在的问题:class B{public: virtual ~B(); void operator delete(void*, size_t) throw(); void operator delete[](void*, size_t) throw(); void f(void*, size_t) throw();};class D

2016-03-16 22:57:30 392

原创 C++ Exceptional 名称查找、命名空间和接口原则

这一章的内容由下面一个例子引出:namespace A{ struct X; struct Y; void f(int); void g(x);}namespace B{ void f(int i) { f(i); // which f } void g(A::X x) { g(x); //

2016-03-15 23:55:33 672

原创 C++ Exceptional 最小化编译期依赖

首先,为什么要最小化编译器依赖呢?因为这样简化文件之间的依赖关系,减少由于一个文件的改变,而引起的另外的文件的重新编译。从而提高编译速度。下面来看一下下面的一个示例代码:// x.h: original header#include <iostream>#include <ostream>#include <list>// None of A, B, C, D or E are templat

2016-03-14 04:38:25 347

原创 C++ Exceptional 模板设计模式(Template Design Model)

首先看一下下面一段代码:class GenericTableAlgorithm{public: GenericTableAlgorithm(const string& table); virtual ~GernericTableAlgorithm(); // Process() returns true if and only if successful. //

2016-03-13 23:39:11 395

原创 C++ Exceptinal 类之间的关系

来考虑下两个类之间如下的关系: 1. “IS-A”: 描述两个类之间,其中一个类A属于另一个类B。类A出现的地方,都可以替换成类B,而不会出现问题,遵循LSP准则。这种情况下,两个类之间的关系就是子类和父类的关系,并且子类是public继承自父类的。 2. “IMPLEMENTED-IN-TERMS-OF”:描述两个类之间,其中一个类可以藉由另一个类的一些功能来实现。这种情况下,两个类之间的

2016-03-13 04:05:35 399

原创 C++ Exceptional 类的重载、重写(覆盖)和隐藏

通过下面这个例子可以很好的理解重载、重写和覆盖的关系:class Base{public: virtual ~Base() {} virtual void f(int); virtual void f(double); virtual void g(int i = 10);};void Base::f(int){ cout << "Base::f(i

2016-03-13 02:46:41 319

原创 C++ Exceptional 写异常安全的代码

C++ Exceptional中有一大段的章节是写异常安全的,这可能也是很多程序员在平时的编程中所容易忽视的一个部分,这里我大体总结一下这本书中所涉及到的有关异常安全的知识。异常安全有三种层次: 1. 基本的异常安全: 当异常发生时,保证没有内存泄露 2. 强的异常安全:当异常发生时,不但要保证没有内存泄露,还要保证程序的状态和异常发生前是一致的。 3. 异常永不发生的保证: 即保证在任

2016-03-12 07:41:00 908

原创 C++ exceptional Maximally Reusable Generic Containers

这一章主要介绍了如何利用模板拷贝构造函数和模板赋值构造函数来最大化的重用一个容器。书上给了一个实现固定大小的vector的例子,代码如下:template<typename T, size_t size>class fixed_vector{public: typedef T* iterator; typedef const T* const_iterator;

2016-03-12 00:34:25 341

原创 Exceptional C++, 实现一个不区分大小写的字符串比较类

C++标准库提供了字符串类std::string,这个类包含了字符串常用的操作,包括实现了operator==来实现字符串的比较,但这里的比较是区分大小写的。那么在不使用操作系统提供的不区分大小写函数的情况下,如何方便的利用std::string 来实现一个区分大小写的类呢?这里的奥妙就在于巧妙地运用了char_traits<char> 这个字符串的辅助模板类。 首先std::string 的定义

2016-03-11 03:55:17 749

原创 C++ Exceptional Item 20 Class Mechanics

C++ Exceptional Item 20 Class Mechanicsclass Complex{public: //可以由一个变量构造的类型,尽量把构造函数声明为explicit的, //以避免隐式的类型转换 explicit Complex(double real, double imaginary = 0) : real_(real), imagin

2016-03-11 01:35:12 470

原创 Effective C++ 读书笔记3

Item 29 Public inheritance means “is-a”. Everything that applies to base classed must also applu to derived classes, because derived class object is a base class object.Item 30 1. Names in derived c

2015-12-10 23:04:16 303

原创 Effective C++ 读书笔记2

Item 25 Avoid returning handles(references, pointers, or iterators) to object internals. It increases encapsulation, helps const member functions act const, and minimizes the creation of dangling hand

2015-12-08 23:41:23 270

原创 Effective C++读书笔记

Item 1 1. For simple constants, prefer const objects or enums to #define s. 2. For function-like macros, prefer inline functions to #define s.Item 2 Use const whever possible 有关iterator比较容易弄错的地方c

2015-12-07 23:27:25 340

原创 天书夜读 第二章 笔记

1.循环结构和分支结构的汇编这里主要包括 for循环、while循环、if...else分支结构、do...while循环。其中if...else if....else结构要特别注意,在else if和else后第一条指令是jmp到if...else...结束处,这主要是防止,在上一步的分支执行后接着执行这个分支结构,加上这个之后,就可以直接跳出分支结构了for循环一般结构;m

2012-12-06 20:15:47 231

原创 天书夜读 第一章笔记

1.call的本质相当于push+jmp,ret的本质相当于pop+jmp,call和ret都要操作堆栈,而jmp只是单纯的跳转,不会对堆栈进行操作2.lea 取得地址(第二个参数)后放入第一个参数中,也可用来赋值,如lea edi,[ebp-0cch],中括号是取得地址的内容,即取得ebp-0cch这个地址的内容,也就相当于mov edi,ebp-0cch,但mov操作符不支持后一个参数

2012-12-06 17:18:18 306

空空如也

空空如也

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

TA关注的人

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