在继承中:我可以覆盖基类数据成员吗?

Har*_*rry 5 c++

假设我有两个类,如下所示:

Class A
{
public:
..
private:
  int length;
}

Class B: public Class A
{
public:
..
private:
 float length;
}
Run Code Online (Sandbox Code Playgroud)

我想知道的是:

  1. 是否允许覆盖基类数据成员
  2. 如果是的话,这是一个好习惯吗?
  3. 如果不是,扩展类的数据成员类型的最佳方法是什么?

有一个类满足我的需求,我想重用它.但是,对于我的程序需求,其数据成员应该是另一种类型.

我有一些书,但它们都只是指覆盖基类成员方法.

Vin*_*nay 8

您可以使用模板化成员,即通用成员,而不是覆盖成员.

您也可以声明VARIANT(COM)之类的联合.

   struct MyData
   {
        int vt;              // To store the type

        union 
        {                
            LONG      lVal;
            BYTE      bVal;
            SHORT     iVal;
            FLOAT     fltVal;
            .
            .
        }
   };
Run Code Online (Sandbox Code Playgroud)