上一页 1 2 3 4 5 6 7 8 9 ··· 11 下一页
  2013年6月26日
摘要: 以下内容主要来自于C++ Primer中文版第四版12.6节。对于一个已经定义的类,有的时候需要定义这个类的一个全局对象来获取或管理全体类对象的相关信息,比如统计所有类对象的数量。但是全局对象会带来问题:全局对象可被用户随意修改,破坏了封装性。因而常常用类静态成员来代替全局对象。通常,非static数据成员存在于类类型的每个对象中,而static数据成员独立于该类的任意对象而独立存在;每个static数据成员是与类关联的对象,而不与类对象关联。类也可以定义static成员函数,static成员函数没有this形参,它可以直接访问类的static成员,但不能直接访问非static成员。(1)使用 阅读全文
posted @ 2013-06-26 22:03 Sophia-呵呵小猪 阅读(256) 评论(0) 推荐(0) 编辑
摘要: 友元允许特定的非成员函数能够访问一个类的私有成员,同时阻止一般的访问。通过友元机制,一个类可以将对其非公有成员的访问权授予指定的函数或类。友元的声明以关键字friend开始,只能出现在类定义的内部,但可以出现在类中的任何地方,但通常将友元声明成组地放在类定义的开始或结尾。友元可以是其他的类,普通的非成员函数或其他类的成员函数,下面分别简要介绍。(1)类作为友元如果将一个类B声明为另一个类A的友元,那么这个友元类B的成员就可以直接访问A的私有成员,声明的格式如下:class A{ friend class B;}(2)类的成员函数作为友元如果不是将整个类设为友元,而是将某个类B的成员函数设... 阅读全文
posted @ 2013-06-26 14:08 Sophia-呵呵小猪 阅读(217) 评论(0) 推荐(0) 编辑
  2013年6月25日
摘要: sizeof 操作符的作用是返回一个对象或类型名的长度,返回值的类型是size_t。size_t是标准库中的类型,定义在cstddef头文件中,该文件是C标准库的头文件stddef.h的C++版本,它是一个与机器相关的unsigned类型,其大小足以保证存储内存中的对象的大小。(1)sizeof 操作符的用法sizeof的结果是编译时常量,它的使用有三种形式:a. sizeof (type name)b. sizeof (expr)c. sizeof exprb,c中返回的结果都不是expr的值,而是expr的结果的类型的长度,因此,对于sizeof *p,即使p指向一个无效地址,结果也是合法 阅读全文
posted @ 2013-06-25 21:43 Sophia-呵呵小猪 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 这一章的内容主要来自C++ Primer中文版第四版的第5章。(1)自增和自减操作符自增和自减操作符有前置和后置两种形式,前置操作使用的是对象加1后的值,后置操作使用的则是对象加1前的值,推荐使用前置操作符,原因如下:前置操作返回的是加1后的值,所以返回的是对象的本身,是左值;而后置操作符需要将对象加1,但是还需要保存加1前的值,对于int类型和指针,编译器可优化掉这些额外开销,但是对于复杂的迭代器类型,可能就需要花费很大的代价,如果使用前置操作符,就可以忽略掉这些性能差异。(2)箭头操作符是为了简化解引用和点操作符点操作符用来获取类类型对象的成员,如果要通过指向对象的指针获取对象的成员,那么 阅读全文
posted @ 2013-06-25 16:50 Sophia-呵呵小猪 阅读(274) 评论(0) 推荐(0) 编辑
摘要: C++中的多维数组其实就是数组的数组,二维数组指的就是数组的元素也是数组。(1)初始化二维数组的初始化方式有如下几种:1 int ia[3][4] = {{0,1,2,3}, {4,5,6,7}, {8,9,10,11}};2 int ia1[3][4] = {0,1,2,3,4,5,6,7,8,9,10,11};3 int ia2[3][4] = {{1},{3},{6}};//只初始化了每一行的第一个元素4 int ia3[3][4] = {0, 3, 6, 9}//只初始化了第一行的元素对于第3行所显示的初始化方式,剩下的元素的初始化规则同一维数组的初始化方式,即内置类型的初始化为0,类 阅读全文
posted @ 2013-06-25 15:06 Sophia-呵呵小猪 阅读(353) 评论(0) 推荐(0) 编辑
摘要: C++语言提供了两种类似于vector和迭代器类型的低级复合类型——数组和指针(此话出自C++Primer 中文版第四版P109,总觉这话让人看着不舒服……),设计良好的程序只有在强调速度时才在类实现的内部使用数组和指针。数组元素可以是引用外的任何内置类型或者类类型。(1)数组的初始化在没有显示初始化的情况下,数组元素的初始化类似于普通变量:a. 在函数体外(全局)的定义的内置数组,其元素均初始化为0;b. 在函数体内定义的内置数组,其元素无初始化;c. 如果为类类型,不管在哪里定义,都自动调用该类的默认构造函数进行初始化;如果该类没有默认构造函数,则必须为该数组的元素提供显示初始化。显示初始 阅读全文
posted @ 2013-06-25 13:54 Sophia-呵呵小猪 阅读(230) 评论(0) 推荐(0) 编辑
  2013年6月24日
摘要: (1)常见预处理器指令集C++继承了C的非常精细的预处理器,以高度受限的方式使用预处理器。预处理器主要的指令及功能如下表:指令功能#空指令,无任何效果#include包含一个源代码文件,把源文件中的#include扩展为文件正文,即把包含.h的文件找到并扩展到#include所在处#define定义宏#undef取消已定义的宏#if条件编译指令,如果为真,则编译下面的代码#ifdef条件编译指令,如果宏已经定义,则编译下面的代码#ifndef条件编译指令,如果宏没有定义,则编译下面的代码#elif条件编译指令。如果之前的if不为真,当前条件为真,则编译下面代码#endif结束一个#if...# 阅读全文
posted @ 2013-06-24 19:43 Sophia-呵呵小猪 阅读(499) 评论(0) 推荐(0) 编辑
摘要: C++基础系列主要罗列C++语言的一些基础知识,供基础不牢、记忆模糊和概念混淆时快速查询所用,该系列的章节按照C++ Primer中文版第四版进行整理。(1)基本内置类型C++中基本的内置类型包含整型和浮点类型两种。整型:整数、字符和布尔值,其中整数类型中short, int, long占用的存储空间分别为半个机器字长、一个机器字长、一个或两个机器字长,32位机中int和long类型通常都是一个机器字长;字符有char和wchar_t两种,char类型通常是单个机器字节(8位),wchar_t是宽字符型,通常占用的最小空间为16位,用于扩展字符集,如汉字或日语,这些字符集中的一些字符不能用单个 阅读全文
posted @ 2013-06-24 19:33 Sophia-呵呵小猪 阅读(494) 评论(0) 推荐(0) 编辑
摘要: (1)二叉查找树的定义二叉查找树是一棵二叉树,如果树不为空,那么需满足如下的性质:1)每一个元素都有一个关键字,且任何两个不同的元素的关键字不相等,即关键字惟一;2)左子树(如果存在)中的关键字小于根节点的关键字;3)右子树(如果存在)中的关键字大于根节点的关键字;4)左右子树也是二叉查找树。(2)二叉查找树的查找、删除和插入a. 查找 二叉查找树的查找从根结点开始,若当前结点的关键字等于要查找的关键字,那么返回当前结点;如果当前结点的关键字小于要查找的关键字,那么从左子树中开始寻找,否则从右子树中开始寻找。C++代码实现如下: 1 template 2 TreeNode* Tree::Fin 阅读全文
posted @ 2013-06-24 13:00 Sophia-呵呵小猪 阅读(262) 评论(0) 推荐(0) 编辑
  2013年6月20日
摘要: 在二叉树系列三中讲述了二叉树的前序遍历、中序遍历和后序遍历的递归实现,可以看到采用递归实现的代码非常简单,但是代码简单不代表实际运行过程中也能达到最简。下面将要介绍二叉树几种遍历的非递归实现实现。(1)前序遍历 1 template 2 void Tree::PreOrderNonRec(TreeNode* root) 3 { 4 if(root != NULL) 5 { 6 stack*> s; 7 TreeNode* curr = root; 8 while(curr || !s.empty()) 9 {10 ... 阅读全文
posted @ 2013-06-20 16:40 Sophia-呵呵小猪 阅读(216) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 ··· 11 下一页