自定义博客皮肤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)
  • 资源 (6)
  • 收藏
  • 关注

原创 五、GDI图形基础

5.1 GDI结构 GDI是win子系统,主要负责显示图形。不只应用程序使用GDI,同时win本身也使用GDI显示 接口对象,如菜单、图标等。从程序写作角度来说,GDI由几百个函数调用和一系列相关数据结构组成。 GDI函数虽然众多,但主要可以分为几大类: 1、取得和释放设备内容的函数。如BeginPaint…EndPaint等 2、取得有关设备内容的函数。如GetTextM

2015-05-21 15:07:39 1112

转载 五十、异常处理

1、异常处理的基本思想 目标:使用软件具有容错能力。在出现异常时程序能够继续往下运行,必要时提供错误信息。 软件开发中往往每个函数都有自己的分工,很多出现错误的函数都不会处理错误,而是产生一个异常让调用者捕捉和处理。如果调用者也不能处理此异常,则异常就会被继续向上级调用者传递,这个传递过程会一直持续到异常能被处理为止。如果程序最终没能处理这个异常,那么它就会被传递给C++的库函数termi

2015-05-17 15:38:29 435

转载 四十八、多态性:虚函数

1、虚函数的意义 继续前面,如果我们要用基类指针指向派生类的同名成员,就要用到虚函数了,实现运行时的多态。 虚函数是动态绑定的基础,需要注意的是:虚函数是非静态的,一定不能是静态成员函数。2、虚函数的声明和使用virtual 函数类型 函数名(形参表) { 函数体 } virtual关键字,只有在类声明时给出,如果

2015-05-17 14:51:32 415

转载 四十七、多态性:运算符重载为类的友元函数

友员函数可以通过类对象访问类的公、私、保护成员。和类成员函数权限一样 与重载为成员函数不同的是:重载的友元函数不属于任何类,这样操作数都需要通过函数的形参表传递。(前面的双目只需提供一个参数,因为调用对象本身就是一个操作数了)同样分为双目运算和单目运算来讨论。双目运算符如类A “+”重载为其友员函数。对象a+b相当于 operator+(a,b)单目运算符以前置和后置“

2015-05-17 11:11:05 583

转载 四十六、多态性:运算符重载为类的成员函数

运算符重载为类成员函数后就可以像其他成员函数一样访问本类数据成员了。在类外部可以通过类对象像原操作符一样使用重载运算符。如“+”重载为类A的成员函数后,A的对象可以这么运算:a+b。 双目运算符:一个操作数是使用此运算符的对象本身。另一个操作数是运算符重载函数传递进来的对象。如a+b,  ”+”重载为类的成员函数,此函数只有一个形参。相当于a.operator+(b)。形参类型就是b的对象类型

2015-05-17 10:45:56 513

转载 四十五、态性:运算符重载的概念和规则

1、运算符重载的概念为什么会有运算符重载?(不同的操作数类型产生不同操作) 除了内置数据类型,我们自定义数据类型也要进行某些运算,这就要求我们自定义运算符,实际上属于函数重载,不是运算符表达式而是调用运算符函数,操作数实际也是运算符函数的参数。 2、运算符重载规则 a、虽然是为了让自定义数据类型能使用预定义运算符而进行重定义。但一般重定义功能与原运算符功能相似,参数个数也相同,

2015-05-16 10:54:07 412

转载 四十四、多态性:多态的概念和类型

1、多态的类型四种:重载多态、强制多态、参数多态、包含多态 前面两种为专用多态。普通函数和类成员函数的重载,属于重载多态。再如整形变量和浮点变量相加,整形会转换为浮点进行运算,这就是强制多态。 后面两种为参数多态。如模板类型参数化就是参数多态。包含多态一般通过虚函数实现。 2、多态实现 编译时多态:编译时确定具体调用哪个函数。即 静态绑定、(重载,强制,参数多态都是静态绑定

2015-05-16 10:21:43 1804

转载 四十三、继承与派生:赋值兼容性规则

派生继承自基类,这样基类对象具有的功能,派生类对象也有。这样引出了赋值兼容性规则。Derived is a Base类比Efective中的is-a章节class Base{…};class Child:public Base{…};Base base,*pBase;Child child;赋值兼容性规则:在基类对象可以使用的地方都可以用公有派生类对象代替。根据上面规则,这里的代替

2015-05-16 10:04:12 955

转载 四十二、继承与派生:虚基类及其派生类的构造函数

1、虚基类的概念,为什要有虚基类? 当派生类的多个基类有共同基类时,派生类继承而来的成员有相同名称,定义对象之后同名成员在内存中有多份数据成员和函数成员的拷贝,明显造成了内存浪费。 虚基类:将派生类直接基类的共同基类声明为虚基类。这样派生类从不同直接基类继承而来的同名数据成员在内存中就会只有一份拷贝(同名成员函数只有一个映射)。实现了唯一标识同名成员,也节省内存空间。虚基类声明方式:

2015-05-15 15:42:00 673

转载 四十一、继承与派生:作用域分辨符

作用域分辨符主要是为了处理基类和派生类成员的可见性问题。 派生类在继承时,基类成员和派生类成员都有类作用域。两个具有包含关系的作用域,派生类位于内层。当派生类和基类中存在同名的数据成员或函数成员时,派生类的新成员覆盖了基类成员。也就是说在派生类内还是在派生类外部都只能访问到派生类成员,同名基类成员无法访问。这时我们可以用作用域分辨符来访问基类中的同名成员。基类名限定了后面成员的所属类。语法

2015-05-15 15:04:15 733

转载 四十、继承与派生:派生类的析构函数

同样派生类不能继承基类析构函数,所以需要的话就要定义派生类自己的析构,派生类只需清理新增成员就可以,至于基类和内嵌对象,系统自动调用基类和内嵌对象成员的析构函数。调用顺序,我们只要记得和构造顺序相反就可以: 1、清理派生类新增成员   2、调用内嵌对象成员所属类的析构  3、调用基类析构上述如果涉及多个基类或内嵌对象,同样遵循与构造函数执行时相反的顺序。#includeusing

2015-05-15 10:29:41 431

转载 三十九、继承与派生:派生类的构造函数****

我们知道基类的构造和析构函数派生类不能继承,这就要求派生类要定义自己的相关函数,同时从基类继承的成员初始化仍可通过基类的构造函数来完成。 对派生类初始化时需要对基类的数据成员、派生类新增数据成员和内嵌的其他类对象的数据成员进行初始化。 所以派生类构造函数需要做的工作有:使用传递给派生类的参数,调用基类和内嵌对象成员的构造函数来初始化它他们的数据成员,再添加新语句初始化派生类的新成员。语

2015-05-15 10:14:18 512

转载 三十八、继承与派生:派生类对基类成员的访问控制之保护继承与私有继承

1、保护继承 保护继承中,基类的公有和保护成员被派生类继承后变成派生类的保护成员,基类的私有成员在派生类中不能访问。但派生类的新增成员可以直接访问基类的公有和保护成员,但派生类对象则不能访问他们。因为、类的对象也处于类外,不能访问类的保护成员。对于基类私有成员,派生类新增成员和派生类对象都不能访问。         这里我们可以看出保护成员访问属性的作用了。如类A,B为其派生类,对于B,A

2015-05-14 10:40:07 1623

转载 三十七、继承与派生:派生类对基类成员的访问控制之公有继承

类的继承有public、protected、private三种。派生类通过不同的继承方式可以获得对基类成员的不同访问属性。派生类对基类成员的访问主要有两种:一是派生类新增成员对基类成员的访问。二是派生类对象对基类成员的访问。当继承方式为public时,派生类对基类中的公有和保护成员访问属性不变,对基类的私有成员不能访问。即基类的公有和保护成员继承到派生类中以后同样成为派生类的公有和保护成员

2015-05-14 09:30:24 793

转载 三十六、继承与派生:派生类从基类继承的过程

派生类从基类继承的过程可以分为三步:吸收基类成员、修改基类成员和添加新成员。吸收基类成员是代码复用,而修改和增加新成员则是对原有代码的扩展。代码利用和扩展是继承与派生的主要目的。class B{ public: B(); ~B(); int GetVal(); private:

2015-05-13 18:23:29 898

转载 三十五、继承与派生:概念介绍与派生类的声明

1、继承与派生的概念 对一个既有的成果,怎样不做重复劳动来直接利用?我们可以通过类的继承和派生来解决。 类的继承是指新类从已存在的类中获得已有特性。 类的派生则是由已存在的类产生新类的过程。已有类产生新类时,新类拥有已有类的全部特性,然后又加入自己独有的新特性。同样派生类又可以作为基类派生出新的子类,这样就形成了类的层次结构。2、派生类的声明class 派生类名 : 继

2015-05-13 16:22:01 568

转载 三十二、数组、指针和字符串:string类

除了继承C语言字符数组存放字符串的方式,C+还提供了处理字符串的String类。 string类位于标准库中。除继承了C语言中的一些系统函数外还定义了一些模版和类,为分六种类型:输入/输出类、容器类与ADT(抽象数据类型)、存储管理类、算法、错误处理和运行环境支持。1、string构造函数string(); // 默认构造函数,创建一个长度为0的字符串string(const st

2015-05-13 15:17:28 525

转载 三十二、数组、指针和字符串:字符数组存放和处理字符串

1、字符数组的声明和使用char 字符数组名[下标1][下标2]char str[3]={‘a’,’b’,’c’} 2、用字符数组存放和处理字符串 存放字符串时,结尾有结束标记’\0’,所以存放字符串数组元素个数应大于等于字符串长度加1.赋值方式有下面几种。char str[4]={97,98,99,0}; //以逗号分隔的ASCII码为字符数组赋初值,

2015-05-08 14:18:21 543

转载 三十二、数组、指针和字符串:动态内存分配和释放

当我们对需要分配的空间不确定,分配过大可能造成内存浪费,过小出现越界。这时我们就要用到动态内存分配。即在程序运程过程中根据实际情况动态分配适量内存,使用完毕后释放。动态分配时申请和释放的内存单元叫堆对象。1、new和delete语法形式new 类型名(初值列表)int *pp=new int(5); //如果是类对象则调用合适的构造函数delete p; //释放对象需要注意的

2015-05-07 21:21:33 1204

Visual AssistX for VS2017

找了好多个版本的番茄助手,要么不能用,要么分太多,但最后还是找了一个,亲测能用。适用于VS2017及以下的vs版本。资源下载没有0积分设置,最低积分是1分,供有需求的朋友下载。

2019-01-22

深入应用C++11 代码优化与工程级应用完整版 pdf

找了好些链接,要么不完整,要么分太高。看到好多下载链接都要10多分才能下,下载后特意上传了下。资源分好像最低要2分,选了最低的。这个版本是没带目录的,先上传下,后续看完再更新增加的目录书签版本,希望帮助到大家。

2018-02-27

TCP_UDP测试工具

TCP_UDP测试工具 包含TCP,udp服务器,支持创建tcp连接,udp连接等

2017-06-10

TCP-UDP调试助手

该工具包含TCP服务器, UDP服务器,TCP及UDP客户端及相关的网络抓包工具等,便于日常学习开发使用

2017-06-10

WINCE下CH340,CH341驱动

WINCE下CH340,CH341驱动

2017-06-01

FileTool.ext

VC6.0和Visio都是开发者常用的工具,但是他们却存在冲突。当两个软件同时安装在一台机器上时,如果在 VC6.0中的“FileView”右键点“add files to folder”或者在Project菜单点Add to project --Files都会报devshl.dll出错。

2014-11-17

空空如也

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

TA关注的人

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