2009年6月11日

[C++ rudiment]虚析构函数

摘要: C++的多态性是通过虚函数来实现的,虚函数的出现使得动态链接成为可能。基于构造函数的特点,不能将构造函数定义为虚函数,但可以将析构函数定义为虚函数。当派生类的对象从内存中撤销时,会先调用派生类的析构函数,然后自动调用基类的析构函数,如此看来析构函数也没有必要定义为虚函数。但是考虑如下这种情况,如果使用基类指针指向派生类的对象,而这个派生类对象恰好是用new运算创建的,这种情况下会如何呢?当程序使用... 阅读全文

posted @ 2009-06-11 16:19 笔记 阅读(528) 评论(0) 推荐(0) 编辑

[C++ rudiment]多重继承中二义性错误的解决:虚基类

摘要: C++中允许多重继承,看以下例子:[代码]编译后会出现以下编译错误:error C2385: ambiguous access of 'a'。究其原因,因为A是D的间接基类,通过D访问A的数据成员有两条路可走,一是D->B->A,另外一条是:D->C->A.所以导致了二义性。解决:这可以通过虚基类来解决二义性问题,如果采用虚基类方式来定义派生类,则在创建派生类对象时,类层次... 阅读全文

posted @ 2009-06-11 15:34 笔记 阅读(2388) 评论(0) 推荐(0) 编辑

[C++ rudiment]基类和派生类的构造函数

摘要: 1. 顺序当创建一个派生类的对象时,系统首先自动创建一个基类对象,也就是说,在调用派生类构造函数创建派生类对象之前,系统首先调用基类的构造函数创建基类对象。当派生类对象生命期结束时,首先调用派生类的析构函数,然后调用基类的析构函数。简而言之,就是说,构造函数:基类->派生类。析构函数:派生类->基类。这个我们完全可以通过一个小程序来说明:[代码]OutPut:2. 通过派生类的构造函数... 阅读全文

posted @ 2009-06-11 15:11 笔记 阅读(9172) 评论(0) 推荐(3) 编辑

[C++ rudiment]关于类的友元

摘要: [代码]OutPut:上面已经说过了,友元是单方向性的和非传递的,一个类设置基类A为友元,并不代表基类A的派生类也可以访问那个类的所有数据成员。非传递! 阅读全文

posted @ 2009-06-11 11:13 笔记 阅读(365) 评论(0) 推荐(0) 编辑

[c++ rudiment]关于函数

摘要: 1. float MyFunc(const float b){return b*b;}这样写是不行的,因为上函数中的return那一句相当于以下两句:b = b * b;return b;而MyFunc函数中明确指定参数b是const类型的,不能对const类型的变量赋值。2.可以通过函数给变脸赋值,注意这个时候函数的返回值和参数应该是直接传地址的,也就是说,应该是指针或者引用。给出一个例子如下:... 阅读全文

posted @ 2009-06-11 09:57 笔记 阅读(215) 评论(0) 推荐(0) 编辑

导航