代码之家  ›  专栏  ›  技术社区  ›  Pukki

重写派生类C中基类私有成员的行为++

  •  2
  • Pukki  · 技术社区  · 10 年前

    假设我有一个来自软件包的类,所以我没有办法更改设计,其形式如下:

    class A
    {
    public:
      A(int degree) 
      {
        ...
        initialize_points();
        ...
      }
      ...
    private:
      ...
      void initialize_points() 
      { 
        int number = 1;
        // proceed to do computations using the number specified above
        ...
      }
      ...
    }
    

    我需要的是上课 B 与班级相似 A 除了 number 在函数中指定 initialize_points() 我希望它是34而不是1。

    由于缺乏经验,我不太明白我怎么能得到这样一个类 B (如果我这样做的话,也许最好把它写成一个新的类,模仿 A. ?) 来自班级 A. 因为函数的行为是 private 基类的成员。

    非常感谢。

    1 回复  |  直到 10 年前
        1
  •  2
  •   Sam Varshavchik    10 年前

    简单的答案是,这不能在C++中完成。派生类可以重写其基类的主要机制是虚拟函数。除非基类定义了虚拟函数,否则在派生类中无法执行任何操作来覆盖它。