2013年6月29日
摘要: (1)派生类中的拷贝构造函数如果派生类中定义了自己的拷贝构造函数,那么该函数中应该显示调用基类的拷贝构造函数来初始化基类部分:1 class Derived : public Base2 {3 public:4 Derived(const Derived& d)5 : Base(d)6 { }7 };如果省略了上面代码中的第5行,那么将在该派生类拷贝构造函数中调用基类的默认构造函数初始化基类部分,结果导致派生类成员是从d中拷贝过来的,而基类部分却是默认值,这与拷贝应该拷贝整个对象的初衷是违背的。(2)派生类中的赋值构造函数同拷贝构造函数一样,派生类定义中应... 阅读全文
posted @ 2013-06-29 22:06 Sophia-呵呵小猪 阅读(955) 评论(0) 推荐(0) 编辑
摘要: 基类的构造函数不可以被继承,可以为public, protected, private,如果某个构造函数只希望能被派生类访问,那么可以设置为protected。(1)派生类构造函数先调用基类的构造函数在创建一个派生类对象时,需要调用派生类的构造函数,由于派生类对象都包含了一个或多个基类子对象,因此会在构造函数中首先调用基类的构造函数来创建基类子对象。如:1 class Bulk_Item : public Item_Base2 {3 public:4 Bulk_Item():min_qty(0),discount(0.0) { }5 };当要创建一个Bulk_Item对象时,首先调... 阅读全文
posted @ 2013-06-29 20:48 Sophia-呵呵小猪 阅读(288) 评论(0) 推荐(0) 编辑
摘要: 在面向对象编程系列二中,我们看到派生类对象中包含了其基类的部分,可以说派生类对象也是基类对象,所以存在从派生类类型引用或指针到基类类型引用或指针的自动转换,即可以将派生类对象的引用转换为基类子对象的引用,指针也类似。但是,由于基类类型对象可能是一个独立的对象也可能是一个派生类对象的子对象,所以不可以将基类类型的引用或指针转换为派生类类型的引用或指针。相对于引用或指针的转换,对象的转换更为复杂。一般而言,可以使用派生类类型的对象对基类类型的对象进行初始化或赋值,但不可以将派生类类型对象直接转换为基类类型对象。下面分别简要讲述从派生类到基类的引用转换和对象转换:(1)引用转换如下面的代码:1 do 阅读全文
posted @ 2013-06-29 19:35 Sophia-呵呵小猪 阅读(804) 评论(0) 推荐(0) 编辑