- 博客(27)
- 资源 (3)
- 收藏
- 关注
原创 数据结构和算法C++语言实现:双向链表
1、双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。2、如果对链表还不熟悉,可以看链表的基础知识 和链表的实现 这两篇文章中对链表做了详细的介绍,并且进行了相关的实现。有了上述的基础知识,我们来实现双向链表就很简单了。3、使用面向对象的方式来实现双
2016-07-25 11:23:58 760
原创 数据结构和算法C++语言实现:使用链表实现稀疏多项式
本例中继承了 C++实现链表中的CList类,并且通过类模板来实现,在实现的过程中使用了操作符重载,友元函数等操作
2016-07-22 09:58:30 1932
原创 C++内存布局:深入立即C++内存布局下
我们继续完成内存布局的讲解。这次需要讲解的内容如下:基类不含虚函数,使用虚继承,派生类中含有虚函数基类含有虚函数,使用虚继承,派生类中不含虚函数基类含有虚函数,使用虚继承,派生类中含有虚函数基类含有虚函数,使用虚继承,向下派生多次基类含有虚函数,多继承1.1 基类不含虚函数,使用虚继承,派生类中含有虚函数先不讲具体的原理,也不描述具体的现象,直接看程
2016-07-13 20:26:04 1513
原创 C++ 内存布局:深入理解C++内存布局
1、虚函数简介 虚函数的实现要求对象携带额外的信息,这些信息用于在运行时确定该对象应该调用哪一个虚函数。典型情况下,这一信息具有一种被称为vptr(virtual table pointer,虚函数表指针)的指针的形式。vptr 指向一个被称为 vtbl(virtual table,虚函数表)的函数指针数组,每一个包含虚函数的类都关联到 vtbl。当一个对象调用了虚函数,实际的被
2016-06-24 10:36:28 4003 1
原创 面向对象,掌握windows应用程序的创建过程:为应用程序添加消息及响应
1、在前一篇文章中:一个窗口的诞生中详细介绍了面向对象的方式创建Windows应用程序窗口的过程。2、一个Windows应用程序应该有交互的功能,也就是说,我们得为其添加消息响应,添加对话框,添加控件等详细的功能,这样才能初具规模的形成一个Windows应用程序。3、windows应用程序是由消息驱动(Message)的,没有了Message,windows便没有了生机和活力。现在为之前的
2015-12-01 11:22:26 636
原创 面向对象,掌握Windows应用程序的创建过程:一个窗口的诞生
一、Windows应用程序简介 现在的Windows支持32位和64位的优先权式多任务(preemptive multitasking)及多线程的图形操作系统。Windows拥有图形使用者接口(GUI ),这种使用者界面也称作「可视化接口」或「图形窗口环境」。 所有GUI都在点矩阵对应的视讯显示器上处理图形。图形提供了使用屏幕的最佳方式、传递信息的可视化丰富
2015-11-30 08:49:44 1573
原创 数据结构和算法C语言实现:链表的实现(基于动态内存分配)
1、链表是由称为节点的元素组成的序列。 每个节点包含两部分:1)、data(数据)部分,存放列表的一个元素。 2)next 部分,存放一个指针,指出包含下一列表元素的节点的位置。如果没有下一个元素,则使用一个特殊的空值。2、链表的基本操作包括构造(创建)、插入节点,删除节点,修改节点。而实现这些的基本操作便是对链表的遍历。3、为了实现链表的遍历,我们需要一个辅助指针。设为pt
2015-11-12 08:44:28 904
原创 C++面向对象操作符重载:调用操作符和函数对象
1、定义了调用操作符的类,其对象常称为函数对象,即它们是行为类似函数的对象。 可以为类类型的对象重载函数调用操作符。一般为表示操作的类重载调用操作符。函数调用操作符必须声明为成员函数。一个类可以定义函数调用操作符的多个版本,由形参的数目或类型加以区别。例如,可以定义名为 absInt 的结构,该结构封装将 int 类型的值转换为绝对值的操作:class absInt{p
2015-11-11 08:58:14 1961
原创 C++面向对象操作符重载:算术操作符和关系操作符
1、算术操作符包括 :+、-、*、/、%(求余),-=,+=... 逻辑运算符主要包括:、==,&&,||2、算术运算符和关系操作符要定义为非成员函数,这是因为上述的运算符均为双目运算符,且运算结束后返回的不是对象本身。3、算术运算符一般返回一个值的拷贝,如果一定要返回某个值的引用,请一定返回const引用,因为引用可以当做左值,返回const引用,可以避免误操作。co
2015-11-10 08:21:42 534
原创 C++面向对象操作符重载:输入输出操作符
1、在定义一个类的时候,合理的将操作符进行重载,可以像使用内置类型一样使用我们定义的类。2、操作符重载有一些原则,我们必须谨记才能避免出错。在之前的章节中有涉及到操作符重载的案例,但是没有系统的讲,想必大家有不少不明白的地方。3、操作符重载的原则: 3.1、重载操作符的范围: 这地方的new和delete指
2015-11-09 08:38:59 850
原创 C/C++语法高阶:const的应用,const在类中的体现
1、const在C++之中有着奇怪的现象。C++中类之外定义的const对象位于全局区,const对象一经定义就必须初始化,初始化的const对象位于全局区的初始化区域,在类之外定义的const对象不能修改。2、C++类之中定义的const对象分为静态的和非静态的,static const 对象位于全局区,在初始化之后是不能修改的。非static的const对象位于栈区,可以通过指向该对象
2015-11-08 08:52:12 784
原创 C/C++ 语法高阶:const应用专题
1、在C语言中const对象并不是真正的常量,在使用的过程中可以修改该对象的值。 定义一个const对象,然后将一个指针指向该对象。并且我们可以通过指针修改该对象的值。#include #include int main(){ const int num =12; int *p = # printf("%s%d\n","const int nu
2015-11-07 08:44:00 645
原创 C/C++高阶语法:函数指针引用,引用与指针
1、函数指针引用的定义如下: type (* &pFunc)(type,type) ( func);2、看一段实例int (*add)(int ,int);int (*&pFunc)(int ,int)(add); 这个实例将pFunc引用指向add函数,我们知道引用一经绑定,便不能将其绑定到其他的对象,但是我们可以通过引用来修改其所绑定的对象。3、
2015-11-06 08:51:46 893
原创 C/C++高阶语法:引用
1、C++中的引用:引用是C++中引入的新特性,开发的过程中起着重要的作用。2、引用的声明以及定义: 引用就是对象的另一个名字。在实际程序中,引用主要用作函数的形参。引用是一种复合类型,通过在变量名前添加&符号来定义。 引用必须用与该引用同类型的对象初始化。int var = 12;int &num = var;//没问题,将int型的引用指向int
2015-11-05 08:36:29 918
原创 C/C++高阶语法:函数指针及其应用,回调函数
1、首先了解一下回调函数的概念: 回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。2、为什么要使用回调函数呢? 因为使用回调函数,在编写代码时我们可以把调用者(主调函数)与被调用者(被调函数)分开。调用者不关心谁是被调用者,所有它需知道的,只是存在一
2015-11-04 08:43:23 771
原创 C/C++高阶语法:函数指针及其应用,动态链接库,正向调用
1、在介绍正向调用之前,先讲一讲动态链接库的知识: 1)、 动态链接库 DLL,即Dynamic Link Library,在理解动态链接库的时候,我们可以把它理解为一个包含变量,函数或是类的集合,我们可以通过一定的方式来调用包含在这个集合中的那些变量,函数或是类。 2)、动态链接库的创建与编译器或是程序语言没有关系,我们只需要遵守特定的约定便可以创建动态链接库。
2015-11-03 08:54:25 1783
原创 C/C++高阶语法:函数指针及其应用
1、在讲函数指针之前,我们先明白C/C++中常见的指针函数。 int * GetData(int num); 形如上面的形式的为指针函数, 指针函数实际上就是函数,只是返回类型为指针。在结构体的深度拷贝中 createaT()函数便是一个指针函数,用来得到结构体对象。这种用法很普遍(基本上是这么用的),我们在打下基础的时候要把这一点给掌握好了。2、函数指针的形式及声明定
2015-11-02 21:02:30 1743
原创 结构体及其应用:结构体的深度拷贝,结构体内含指针
1、在前一篇文章中提到,尽量不要使用赋值操作符来操作结构体,这其中所涉及的便是结构体的深度拷贝。 对于下面这个例子: struct teacher{ char szName[24]; int age; double income;} 进行如下的操作:struct t1,t2;strcpy(t1.szName,"Lucy")
2015-11-01 08:36:15 2186
原创 结构体及其应用:认识结构体
1、结构体作为一种数据结构,可以灵活的用来表示多种数据的集合,不仅仅在C语言中应用广泛,在C++中也 是颇为常见。2、结构体在C语言中和C++中有着一定的区别,主要是结构体的定义形式上会有一定的差别,这一点会在后面 的例子中提及3、在C++中结构体也是作为面向对象来使用的,struct 和class 的区别在于struct 默认其数据成员和成员函数 为公有,而class默认其数据成员为私有的。所以能够使用class的 地方都可以使用stru
2015-10-31 08:45:10 937
原创 C++指针和数组:字符和字符串、字符数组
1、字符串是一种重要的数据类型,但是c语言并没有显示的字符串数据类型,因为字符串以字符串常量的形式出现或者存储于字符数组中。2、在C++标准模板库(STL)中提供了string类,实现了对字符串的封装。但是其实现原理还是居于字符和指针,要了解这个原理,我们先看一下有关字符数组、字符和字符串之间的一些关联。3、字符数组: char
2015-10-30 08:34:26 1371
原创 C++指针和数组:数组指针应用,函数指针
1、数组指针的形式 int (*pArray)[10]; 数组指针区别于指针数组,有关指针数组的知识以及应用请看: C++指针和数组:指针数组 int (*pArray)[10];//中存放的元素为int型,pArray为指向数组的指针2、数组指针的具体应用 数组指针的应用主要有两方面: 1)、指向二维数组,在函数中作为形参
2015-10-29 11:34:06 698
原创 C++指针和数组:指针数组
在存入元素之前,首先要分配内存空间,否则存入数据将失败指针数组作为实参时,其形参类型有两种,一种便是二级指针的形式,还有一种是 指针数组 即 char *pArray[6];++pchar是让pChar 指向pChar中存放的下一个元素,这其中涉及到指针的步长。指针的步长即为指针所指向的元素的类型。
2015-10-28 08:55:41 703
原创 C++指针和数组:二级指针和二维数组
1)、数组名代表的是数组首元素的地址,这是一个常量。即数组已经定义,它的含义便已经明确了,数组就是一个固定内存块大小的别名2)、数组首元素的地址和数组的地址是不同的东西3)、数组也是一种数组类型,其类型由构成数组的元素的类型和数组的大小一起决定 既然明白了数组类型了,那我们就能够明白为什么sizeof(array_int1) = 40 ,而 sizeof(&array_int1) = 4。这是因为,变量array_int1是一种int [10]的数据类型,那么&array_int1便是对这个变量求
2015-10-27 10:16:55 1862
原创 C++指针和数组:认识指针和数组
注:本文章是基于C++98的标准来写的,有关C++11的标准的知识后续会陆续更新1、C/C++在数组和指针方面的内容相差无几,故有关C方面的指针也可以加以参照2、数组的定义和初始化 定义一个数组:Int a[10]; char ch[11]; 初始化一个数组:a[10]
2015-10-26 10:48:31 851
函数指针,动态链接库
2015-11-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人