自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

woshibendangao的专栏

不积跬步,无以至千里!

  • 博客(24)
  • 资源 (3)
  • 收藏
  • 关注

原创 C++必知必会之(24)成员函数查找

1、调用一个成员函数时,包括三个步骤:第一步,编译器查找函数的名字;第二步,从可用候选者中选择最佳匹配函数;第三步,检查是否具有访问该匹配函数的权限。2、很多与函数匹配有关的错误并非源于对编译器复杂的名字查找和重载函数匹配算法的误解,而是对这有序三大步的性质的误解。class B  {     public:         //.....

2013-11-27 13:49:53 925

原创 C++必知必会之(23)名字空间

1、全局作用域日益变得拥挤不堪。例如,许多库都希望包括一个名为String的类。但是,如果使用两个不同的库,其中分别定义了一个string类型,就会产生多重定义错误甚至更糟。2、本质上,名字空间是对全局作用域的细分:namespace  org_semantics    {        class String {  ....  };        String op

2013-11-27 13:09:36 740

原创 C++必知必会之(22)Template Method模式

1、Template Method模式(模版方法)模式和C++模版一点关系都没有。前者是基类设计者为派生类设计者提供清晰指示的一种方式,这个指示就是“应该如何实现基类所规定的契约”。基类可以自由的通过其公有成员函数指定与外界的契约关系,并通过受保护的成员函数为派生类指明额外的细节。私有成员函数也可以用作类实现的一部分。数据成员应该指定为私有。2、一个基类的成员函数是

2013-11-26 11:02:14 852

原创 C++必知必会之(21)重载与重写并不相同

1、重载与重写之间没有任何关系。2、当同一个作用域内的两个或更多个函数名字相同但签名不同时,就会发生重载。函数的签名由它所声明的参数(或形参)的数目和类型构成。当编译器在一个作用域内查找一个函数名字时,发现不止一个函数具有该名字,它就会在该作用域内的可用候选函数中,选择其形参与函数调用中的实参有着最佳匹配的那一个函数,此为重载。3、当派生类函数和基类虚函数具有相同的

2013-11-25 13:53:07 697

原创 C++必知必会之(20)STL函数对象

1、STL使我们能够轻松快捷地编写复杂的代码,既标准又高度优化:std::vector names;//.....std::sort( names.begin( ),  names.end( ) );2、STL另一个优雅之处在于高度可配置。在以上的代码中,使用string的小于(class State {   public:       //.....

2013-11-25 12:36:17 921

原创 C++必知必会之(19)Command模式与好莱坞法则

1、当一个函数对象用作回调时,就是一个Command(命令)模式的实例。2、回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。3、回调是一种常见的编程技

2013-11-24 11:53:08 1411

原创 C++必知必会之(18)函数对象

1、与智能指针一样,函数对象也是一个普通的类对象。智能指针类型重载->和*(可能还有->*)操作符,来模仿指针的行为;而函数对象类型则重载函数调用操作符( ),来创建类似于函数指针的东西。函数对象只是常规的类对象,但是可以采用标准的函数调用语法来调用它的operator()成员。(此成员可能具有多个重载版本)。Fib fib;//....coutfi

2013-11-24 11:10:33 800

原创 C++必知必会之(17)处理函数和数组声明

1、指向函数的指针声明与指向数组的指针声明很容易混淆,主要原因在于函数和数组修饰符的优先级比指针修饰符的优先级高,因此通常需要使用圆括号。int *f1( );     //一个返回值为int *的函数int (*fp1) ( );     //一个指针,指向一个返回值为int的函数具有高优先级的数组修饰符存在同样的问题:const int N = 12;int *

2013-11-23 10:27:14 886

原创 C++必知必会之(16)指向成员函数的指针并非指针

1、获取非静态成员函数的地址时,得到的不是一个地址,而是一个指向成员函数的指针。class Shape  {    public:        //.....        void moveTo (Point   newLocation );        bool validate ( )    const;        virtual bool draw( )

2013-11-23 09:59:26 855

原创 C++必知必会之(15)指向类成员的指针并非指针

1、声明一个指向成员的指针:int *ip;  //一个指向int的指针int C::*pimC;     //一个指针,指向C的一个int成员所要做的全部事情是使用classname::* 而不是普通的*,来表明你在指向classname的一个成员。在其他方面,语法和常规的指针声明符一样。2、一个常规的指针包含一个地址。如果解引用该指针,就会得到位于该地址的对

2013-11-21 15:08:23 921

原创 C++必知必会之(14)函数指针

1、可以声明一个指向特定类型函数的指针:void (*fp) (int);   //指向函数的指针注意,其中的括号是必不可少的,它表明fp是一个指向返回值为void的函数的指针,而不是返回值为void*的函数。就像指向数据的指针一样,指向函数的指针也可以为空,否则它就应该指向一个具有适当类型的函数。extern int f( int );extern void g( lon

2013-11-20 11:51:28 1044

原创 C++必知必会之(13)复制操作

1、复制构造和复制赋值是两种不同的操作。它们一般被放到一起,同时出现,并且必须兼容:class Impl;class Handle  {    public:        //.....        Handle( const Handle & );   //复制构造函数        Handle &operator = ( const Handle & );

2013-11-20 11:00:07 942

原创 C++必知必会之(12)赋值和初始化并不相同

1、赋值发生于赋值时,除此之外,遇到的所有其他的复制情形均为初始化,包括声明、函数返回、参数传递以及捕获异常中的初始化。对于内建类型来说,赋值和初始化的操作区别不明显,只是简单地复制一些位而已。但对于用户自定义类型来说截然不同。考虑如下简单的非标准字符串类:class String {   public:       String (const char *init )

2013-11-19 11:18:30 954

原创 C++必知必会之(11)编译器会在类中放东西

1、对于一个类而言,并非总是“所见即所得”。如果一个类声明了一个或多个虚函数,那么编译器将会为该类的每一个对象插入一个指向虚函数表的指针(标准并未保证移动会如此,但所有现有的C++编译器都采用这种方式来实现虚函数机制)。大多数程序员会假定不同平台之间的虚函数表指针的位置是相同的,因此编写依赖于这种假定的代码。实际上,有些编译器将指针置于对象的开头,还有一些是在末尾,而且,如果涉

2013-11-19 10:39:35 828

原创 C++必知必会之(10)常量成员函数的含义

1、在类X的非常量成员函数中,this指针的类型为X *const。也就是说,它是指向非常量X的常量指针。由于this指向的对象不是常量,因此它可以被修改。而在类X的常量成员函数中,this的类型为const X* const。是指向常量X的常量指针。由于指向的对象是常量,因此不能被修改。这也是为什么可以使用常量成员函数来改变对象的逻辑状态原因,虽然对象的物理状态没有发生改变。

2013-11-19 10:09:41 861

原创 C++必知必会之(9)新式转型操作符

一、C++引入了另一种转型,即采用函数形式的转型语法来表达同样的意思:typedef char *PChar;hopeItWorks = PChar( 0x00ff0000);1、const_cast操作符允许添加或移除表达式中类型的const或volatile修饰符:const Person  *getEmployee( )  {.....}//.....Pers

2013-11-18 17:40:28 832

原创 C++必知必会之(8)指向指针的指针

1、声明指向指针的指针是合法。这就是C++标准所说的“多级”指针。int *pi;int **ppi;int ***pppi;   //一个多级(3级)指针2、第一种情形:声明一个指针数组时;Shape *picture[ MAX ];   //一个数组,其元素为指向Shape的指针由于数组的名字会退化为指向其首元素的指针,所以指针数组的名字也是一个指向指针的指针。

2013-11-18 11:13:05 1038

原创 C++必知必会之(7)常量指针与指向常量的指针

1、T *pt = new T; //一个指向T的指针const T *pct = pt;  //一个指向const T的指针T *const cpt = pt;   //一个const指针,指向T在pct的声明中,指针不是const的,但它所指向的对象被认为是const的。换句话说,const修饰符修饰的是基础类型T而不是指针修饰符*。而对于cpt的声明来说,声明的是一个指向一个非常

2013-11-18 10:43:43 861

原创 C++必知必会之(6)数组形参

1、C++中根本不存在所谓的“数组形参”,因为在数组传入时,实质上只传入指向其首元素的指针。void average( int ary[12] );   //形参ary是一个int *//.....int anArray[ ] = { 1, 2, 3};    //一个具有三个元素的数组const int anArraySize = sizeof( anArray ) / size

2013-11-18 10:18:48 1008

原创 C++必知必会之(5)引用是别名而非指针

一、引用是现有对象的别名。用对象来初始化引用之后,那么对象的名字或引用的名字都可以用于指向该对象。int a = 12;int &ra = a;    //ra是a的别名--ra;            //a == 11;a = 10;       //ra == 10;int *ip = &ra;    //ip指向a     (C++编译器经常使用指针的方式实现引用)

2013-11-17 20:09:42 884

原创 C++必知必会之(4)STL

STL并不仅仅是一个库,它更是一种优秀的思想以及一套约定。STL包含三大组件:容器、算法、迭代器。容器用于容纳和组织元素;算法执行操作;迭代器用于访问容器中的元素。STL的优秀思想体现在:容器与在容器上执行的算法之间无需彼此了解,这种戏法是通过迭代器实现的。迭代器类似于指针(实际上指针就是一种STL迭代器)。像指针一样,迭代器可以指向序列中的一个元素,也可以对其进行解引用,以便获得

2013-11-17 19:37:21 771

原创 C++必知必会之(3)设计模式

设计模式是一个被反复谈论的架构主题,它为特定上下文中的常见设计问题提供了解决方案,并描述了这种解决方案的结果。有两个重要的属性。首先,描述了经过验证的、成功的设计技术,这些技术可以按上下文相关的方式进行定制,以便满足新的设计场合的要求。其次,在提及某个特定模式的应用时不仅包括其中用到的技术,还包括应用该模式的动因以及应用后所达到的效果。(算法不是设计模式,也不是“编程模式”)举个例子,当我

2013-11-17 19:13:59 772

原创 C++必知必会之(2)多态

按C++标准,多态类型就是带有虚函数的类类型。从设计角度看,多态对象就是一个具有不止一种类型的对象。而多态基类则是一个为满足多态对象的使用需求而设计的基类。一个良好设计的多态类对于它的每个基类而言必须是可替换的。可将多态基类看成一份契约,这个基类对其接口的用户做了某些承诺,这些承诺包括郑重的语法承诺,即特定的成员函数可以通过一些特定类型的实参进行调用,以及不太容易验证的语义上的承诺,即当一

2013-11-17 18:59:00 785

原创 C++必知必会之(1)数据抽象

“类型”是一组操作,“抽象数据类型”则是一组具有某种实现的操作。当我们在某个问题领域中识别对象时,首先考虑的问题是“可以用这个对象做什么”而不是“这个对象是如何实现的”。C++为创建复杂的抽象数据类型提供了便利。一般都有如下步骤:1、为类型取一个描述性的名字。(要单一明确)2、列出类型所能执行的操作。(不要忘了初始化(构造函数)清理(析构函数)复制(复制操作)转换(不带explicit

2013-11-17 18:43:02 866

windows核心代码分析

windows开发核心代码分析,具有很好的参考价值,分享给大家!

2013-12-08

windows图形编程

很好的windows图形编程书,分享给大家。

2013-12-08

空空如也

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

TA关注的人

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