04 2005 档案

函数指针, 函数成员指针
摘要:// 函数指针的使用#include using namespace std;enum BOOL { FALSE, TRUE };class Dog {public: void Speak() const { cout > member; if (member == 0) { fQuit = TRUE; break;... 阅读全文

posted @ 2005-04-29 14:57 NeilChen 阅读(749) 评论(0) 推荐(0) 编辑

继承(二)
摘要:重定义与重载隐藏基类成员函数重载与隐藏重载虚函数成员支持多态性;隐藏函数成员破坏多态性。显式调用基类函数成员的方法: fido.Mammal::Move(10);虚函数是如何工作的vtable, vptr虚函数仅仅对引用和指针方式传递起作用。如果以值的方式传递对象作为参数,则因为会导致转型,子类被切割(slice) 为父类的片断, 会导致错误的调用。(调用到的还是父类的方法)虚析构函数如果类中有... 阅读全文

posted @ 2005-04-28 18:07 NeilChen 阅读(719) 评论(2) 推荐(0) 编辑

继承(一)
摘要:向基类构造函数传递变量: #include using namespace std;enum BREED { YORKIE, CAIRN, DANDIE, SHETLAND, DOBERMAN, LAB };class Mammal{public: // constructors Mammal(); Mammal(int age); ~Mammal(); /... 阅读全文

posted @ 2005-04-28 13:54 NeilChen 阅读(591) 评论(0) 推荐(0) 编辑

数组(四)
摘要:一个简单的单链表程序实现: #include using namespace std;class CAT{public: CAT() { itsAge = 1; } CAT(int age) { itsAge = age; } ~CAT() {} int GetAge() const { return itsAge; }private: int itsAge;};/... 阅读全文

posted @ 2005-04-28 11:44 NeilChen 阅读(419) 评论(0) 推荐(0) 编辑

数组(三)
摘要:字符串类 #include using namespace std;class String{public: // constructors String(); String(const char* const); String(const String&); ~String(); // overloaded operators char& operat... 阅读全文

posted @ 2005-04-28 01:03 NeilChen 阅读(502) 评论(0) 推荐(0) 编辑

数组(二)
摘要:char 数组 char Greeting[] = {'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '\0'};// 速记形式:char Greeting[] = "Hello World";例子:填充数组 #include using namespace std;int main(int argc, char *argv 阅读全文

posted @ 2005-04-27 10:24 NeilChen 阅读(512) 评论(0) 推荐(0) 编辑

数组(一)
摘要:指向数组的指针和指针数组考虑下面三个声明的含义: Cat FamilyOne[500];Cat* FamilyTow[500];Cat* FamilyThree = new Cat[500];指针和数组名下例演示在自由存储区中声明和使用数组 #include using namespace std;class CAT{public: CAT() { itsAge = 1; itsWeig... 阅读全文

posted @ 2005-04-26 23:44 NeilChen 阅读(507) 评论(2) 推荐(0) 编辑

重载(二),运算符重载
摘要:重载前缀运算符:returnType operator op(parameter)重载后缀运算符:后缀运算符加一个整变量作为参数,程序忽略参数的值。重载运算符的例子: #include using namespace std;typedef unsigned short USHORT;class Counter{public: Counter(); Counter(USHORT va... 阅读全文

posted @ 2005-04-26 14:36 NeilChen 阅读(807) 评论(0) 推荐(0) 编辑

重载(一),复制构造函数
摘要:初始化对象 Cat(): itsAge(5),itsWeight(8){ }在初始化阶段初始化数据成员通常更清晰,效率更高。有些数据成员必须初始化,不能在构造函数体内赋值。包括引用和常数。只要有可能就应该使用初始化的语法。复制构造函数(Copy Constructor)复制构造函数的参数只有一个,即同一类的对象引用。通常应该是常数引用,因为构造函数不改变传递进来的对象。 CAT (const ... 阅读全文

posted @ 2005-04-26 10:33 NeilChen 阅读(1291) 评论(0) 推荐(0) 编辑

指针,引用的适用场合
摘要:大多数情况下,使用引用传递参数可以达到指针的相同效果(减少传值方式下复制参数带来的开销)。但:如果程序需要先指向一个对象,然后再改为指向另一个对象,则只能用指针;引用不能是空,因此如果被讨论对象有可能为空,则必须使用指针。例子: // 在给内存赋值前确定是否发生错误int* pInt = new int;if (pInt != NULL) int& rInt = *pInt;注意:不要返回... 阅读全文

posted @ 2005-04-26 01:17 NeilChen 阅读(742) 评论(0) 推荐(0) 编辑

指针(三)
摘要:丢失或不稳定指针 当程序对指针进行 delete 操作,从而释放他的内存。然后没有重新赋值就试图使用该指针时,就形成丢失指针。进行 delete 操作后,指针仍然指向旧的内存区,但编译器可以在那里存放任何其他数据。最坏的时候使用该指针可能导致程序崩溃。为安全起见,在删除指针后设置它为 null(0).const 指针 const 可以在指针类型前,后,或者前后都用。例如: // 指向常数的指针,... 阅读全文

posted @ 2005-04-26 00:38 NeilChen 阅读(541) 评论(0) 推荐(0) 编辑

指针(二)
摘要:访问数据成员 本来的语法应该是:(*pRags).GetAge(); 因为这样比较麻烦,所以有简略的语法:pRags->GetAge();自由存储区中的成员数据类可能有一个或多个数据成员是自由存储区中的对象指针。内存可有类构造函数或某个方法来分配,由析构函数来释放。例子: #include using namespace std;class SimpleCat{public: Simple... 阅读全文

posted @ 2005-04-26 00:36 NeilChen 阅读(372) 评论(0) 推荐(0) 编辑

指针(一),栈和自由存储区
摘要:自由存储区:也称为堆(heap),可以看作大量的内存段。通过 new 操作符分配的内存在堆中。程序结束之前不自动清除自由存储区。需要由程序来负责释放(delete)。 栈:函数调用的时候,在栈中保存局部变量和函数参数等。当函数返回时,自动清除栈。new 关键词:new 进行自由存储区中内存分配。 unsigned short int* pPointer = new unsigned short ... 阅读全文

posted @ 2005-04-26 00:34 NeilChen 阅读(985) 评论(0) 推荐(0) 编辑

引用
摘要:引用是别名。定义的语法:int& rSomeRef = someInt;用指针和引用分别实现交换变量的函数: #include using namespace std;void swap(int* x, int* y);int main(int argc, char *argv[]){ int x = 5, y = 10; cout using namespace std;void ... 阅读全文

posted @ 2005-04-26 00:29 NeilChen 阅读(564) 评论(0) 推荐(0) 编辑

第九章 9.2 数组的方法(Array Methods)
摘要:注:这里只讲解一些 Array() 的最重要的方法。其他更多的参考手册。9.2.1 join() 将所有元素转换为字符串并默认用 "," 连接。可以指定一个附加的参数来自定义分隔符: var a = [1, 2, 3];var s = a.join(); // s == "1,2,3"s = a.join(", "); // s == "1, 2, 3" 该方法是 String.split() ... 阅读全文

posted @ 2005-04-22 14:11 NeilChen 阅读(890) 评论(0) 推荐(0) 编辑

第九章 9.1 数组和数组元素(Arrays and Array Elements)
摘要:Array 的元素可以是任何类型,各个元素的类型也可以互不相同。甚至可以是数组类型,这样就可以创建数组的数组。9.1.1 数组的创建方法: // 创建一个没有元素的数组var a = new Array();// 创建一个数组的同时允许指定开始的 n 个元素var a = new Array(5, 4, 3, 2, 1, "testing, testing");// 仅仅指定数组的长度,这个例子... 阅读全文

posted @ 2005-04-22 14:11 NeilChen 阅读(1068) 评论(0) 推荐(0) 编辑

第九章 数组(Arrays)
摘要:第八章讨论了对象。这一章我们来学习数组,这里的数组和前面提到的关联数组不同:这里的数组是以正整数为 key 的,而关联数组是字符串为 key.在大部分情况下,我们可以区分对待对象和数组,这使得编程更容易些。但要知道的是,本质上 Array 也是 Object. 只不过是实现了一些特殊功能的 Object 罢了。 阅读全文

posted @ 2005-04-22 14:10 NeilChen 阅读(587) 评论(0) 推荐(0) 编辑

第八章 8.7 Object 的属性和方法(Object Properties and Method)
摘要:8.7.1 constructor 属性如: var o = new Complex(1, 2);o.constructor == Complex; // 估算为 true上一节提到的 Complex 类(或其他任何类)的实例并不每人拥有一个唯一的 constructor 属性;相反的,该属性其实是从他的 prototype 对象继承来的。上一节提到,JavaScript 为每一个 const... 阅读全文

posted @ 2005-04-22 14:10 NeilChen 阅读(1478) 评论(0) 推荐(0) 编辑

第八章 8.6 用作关联数组的对象(Objects as Associative Arrays)
摘要:访问对象的属性可以用 "." 或 "[]" 语法。下面两个表达式效果是等效的:object.propertyobject["property"]这两种写法主要的区别是,前者的 property 是一个标志符(identifier),他们不是数据类型(data type). 而后者是字符串,是一种数据类型。所以后者可以在运行时刻来灵活的动态估算。比如: var addr = "";for (i ... 阅读全文

posted @ 2005-04-22 14:09 NeilChen 阅读(1004) 评论(0) 推荐(0) 编辑

第八章 8.5 面向对象的 JavaScript (Object-Oriented JavaScript)
摘要:虽然 JavaScript 支持我们所谓的对象(object),但他没有正式的“类”(class) 这个提法。这使得他和传统的面向对象语言比如 C++ 以及 Java 有些区别。面向对象的语言一个共有的概念就是强类型,支持基于类的继承。而 JavaScript 不具备。另一方面,JavaScript 大量使用对象,有基于原型的继承方法, JavaScript 又是一个真正的面向对象语言。(此处省去... 阅读全文

posted @ 2005-04-22 14:09 NeilChen 阅读(1785) 评论(0) 推荐(0) 编辑

第八章 8.4 原型和继承(Prototypes and Inheritance)
摘要:前面我们看到了如何使用 constructor 来初始化对象。如果这样做,那么每一个创建的新对象都会对那些相同的属性,方法建立一个独立的副本。而实际上有更加有效的方法来指定方法,常量,以及其他一些可被所有该类的对象共享的属性。JavaScript 对象从一个原形对象(prototype object) 继承属性。所有对象都有原型;原型的所有属性看上去就像使用它作为原型的那些对象的属性一样。简单的说... 阅读全文

posted @ 2005-04-22 14:08 NeilChen 阅读(653) 评论(0) 推荐(0) 编辑

第八章 8.3 方法(Methods)
摘要:method 就是通过对象而被调用的一种 JavaScript function. function 可以被赋值给对象的任何变量,或属性。比如:f 是一个 function. o.m = f;一旦定义了,我们可以这样来调用: o.m();o.m(x, x + 2); // 如果需要参数方法有一个非常重要的特性:用来调用方法的那个对象,在方法体内可以以 this 指针被引用。function... 阅读全文

posted @ 2005-04-22 14:07 NeilChen 阅读(645) 评论(0) 推荐(0) 编辑

第八章 8.2 构造函数(Constructors)
摘要:constructor 是具有下列两个特征的一种 JavaScript 函数:1. 通过 new 被调用。2. 被隐式传递了一个引用, 叫做 this. 这个引用指向一个新创建的空的对象。构造函数要负责对该对象进行必要的初始化。例子: // Define the constructor.// Note how it initializes the object referred to by "t... 阅读全文

posted @ 2005-04-22 14:07 NeilChen 阅读(974) 评论(0) 推荐(0) 编辑

第八章 8.1 对象和属性(Objects and Properties)
摘要:object 是一些值的集合。他允许我们通过一个关联的名称来取出值。简而言之,就是一些 key / value 的组合。其中的 value 可以是原始 (primitive) 数据类型(number, string), 也可以是 object。 如何创建 object object 可以通过 new 操作符来创建。后面跟一个构造函数名(constructor),这个 constructor 用来进... 阅读全文

posted @ 2005-04-22 14:06 NeilChen 阅读(851) 评论(0) 推荐(0) 编辑

第七章 7.1 定义,调用函数(Defining and Invoking Functions)
摘要:函数可以有 return 语句也可以没有。如果没有,则调用者得到 undefined 的返回值。关于参数的个数:如果传递参数比实际的多,则后面的被忽略。如果少了,则不足的被赋 undefined 的默认值。嵌套的函数(Nested Functions)function 可以嵌套定义,但也不是什么地方都可以。一般限制必须在 global 代码里,或者 top-level function 代码里。不... 阅读全文

posted @ 2005-04-22 14:05 NeilChen 阅读(865) 评论(4) 推荐(0) 编辑

导航

统计

点击右上角即可分享
微信分享提示