|
|
如何在派生类中实现类的基本函数 |
|
|
作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站 |
基类的构造函数、析构函数、赋值函数都不能被派生类继承。如果类之间存在继承 关系,在编写上述基本函数时应注意以下事项: ?? 派生类的构造函数应在其初始化表里调用基类的构造函数。 ??1. 基类与派生类的析构函数应该为虚(即加virtual 关键字)。例如 #include <iostream.h> class Base { public: virtual ~Base() { cout<< "~Base" << endl ; } }; class Derived : public Base { public: virtual ~Derived() { cout<< "~Derived" << endl ; } }; void main(void) { Base * pB = new Derived; // upcast delete pB; } 输出结果为: ~Derived ~Base 如果析构函数不为虚,那么输出结果为 ~Base ??2.在编写派生类的赋值函数时,注意不要忘记对基类的数据成员重新赋值。例如: class Base { public: … Base & operate =(const Base &other); // 类Base 的赋值函数 private: int m_i, m_j, m_k; }; class Derived : public Base { public: … Derived & operate =(const Derived &other); // 类Derived 的赋值函数 private: int m_x, m_y, m_z; }; Derived & Derived::operate =(const Derived &other) { //(1)检查自赋值 if(this == &other) return *this; //(2)对基类的数据成员重新赋值 Base::operate =(other); // 因为不能直接操作私有数据成员 //(3)对派生类的数据成员赋值 m_x = other.m_x; m_y = other.m_y; m_z = other.m_z; //(4)返回本对象的引用 return *this; }
|
|
相关文章:相关软件: |
|