如何在派生类中实现类的基本函数

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

基类的构造函数、析构函数、赋值函数都不能被派生类继承。如果类之间存在继承

关系,在编写上述基本函数时应注意以下事项:

?? 派生类的构造函数应在其初始化表里调用基类的构造函数。

??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;

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航