08 2012 档案

摘要:概述:成员指针只应用于类的非 static 成员。static 类成员不是任何对象的组成部分,所以不需要特殊语法来指向 static 成员,static 成员指针是普通指针。 一.定义数据成员的指针 1.对于类 class Screen { public: typedef std::string::size_type index; ... 阅读全文
posted @ 2012-08-31 17:28 ForFreeDom 阅读(456) 评论(0) 推荐(0)
摘要:一、通过运行时类型识别(RTTI),程序能够使用基类的指针或引用来检索这些指针或引用所指对象的实际派生类型。 通过下面两个操作符提供 RTTI: 1.typeid 操作符,返回指针或引用所指对象的实际类型。 2.dynamic_cast 操作符,将基类类型的指针或引用安全地转换为派生类型的指针或引用。 这些操作符只为带有一个或多个虚函数的类返回动态类型信息,对于其他类型,返回静态(... 阅读全文
posted @ 2012-08-27 14:48 ForFreeDom 阅读(700) 评论(0) 推荐(0)
摘要:一、C++ 中,内存分配和对象构造紧密纠缠,就像对象和内存回收一样。使用 new 表达式的时候,分配内存,并在该内存中构造一个对象:使用 delete 表达式的时候,调用析构函数撤销对象,并将对象所用内存返还给系统。 1.接管内存分配时,必须处理这两个任务。分配原始内存时,必须在该内存中构造对象;在释放该内存之前,必须保证适当地撤销这些对象。 2.对未构造的内存中的对象... 阅读全文
posted @ 2012-08-22 18:14 ForFreeDom 阅读(2829) 评论(0) 推荐(0)
摘要:概述:多重继承是从多于一个直接基类派生类的能力,多重继承的派生类继承其所有父类的属性。 一、多重继承的定义 1. 由逗号分隔的基类列表: class Panda : public Bear, public Endangered { }; 派生类为每个基类(显式或隐式地)指定了访问级别——public、protected 或 private。像单... 阅读全文
posted @ 2012-08-19 21:20 ForFreeDom 阅读(4591) 评论(0) 推荐(0)
摘要:概述:为什么需要命名空间: 在一个给定作用域中定义的每个名字在该作用域中必须是唯一的,对庞大、复杂的应用程序而言,这个要求可能难以满足。库倾向于定义许多全局名字——主要是模板名、类型名或函数名。在使用来自多个供应商的库编写应用程序的时候,这些名字中有一些几乎不可避免地会发生冲突,这种名字冲突问题称为命名空间污染问题。 命名空间为防止名字冲突提供了更加可控的机制,命名空间能够划分全局命名空间,这样使用独立开发的库就更加容易了。一个命名空间是一个作用域,通过在命名空间内部定义库中的名字,库的作者(以及用户)可以避免全局名字固有的限制.一、命名空间的定义:命名空间定义以关键字 namespace 开 阅读全文
posted @ 2012-08-13 17:33 ForFreeDom 阅读(1428) 评论(0) 推荐(0)
摘要:异常处理概述:通过异常我们能够将问题的检测和问题的解决分离,这样程序的问题检测部分可以不必了解如何处理问题。C++ 的异常处理中,需要由问题检测部分抛出一个对象给处理代码,通过这个对象的类型和内容,两个部分能够就出现了什么错误进行通信。一、抛出类类型的异常: 1.异常是通过抛出对象而引发的。该对象的类型决定应该激活哪个处理代码。被选中的处理代码是调用链中与该对象类型匹配且离抛出异常位置最近的那个。 2.异常以类似于将实参传递给函数的方式抛出和捕获。异常可以是可传给非引用形参的任意类型的对象,这意味着必须能够复制该类型的对象。 3.如果抛出一个数组,被抛出的对象转换为指向数组首元素的指针,类似地 阅读全文
posted @ 2012-08-10 09:55 ForFreeDom 阅读(371) 评论(0) 推荐(0)