继承相同的变量,但名称不同

Inherit same variable but different name

本文关键字:变量 继承      更新时间:2023-10-16

是否有一种classy c方法(而不是简单地将变量设置为)(双关语)可以从与基类中名称不同的类中继承变量?python中有as关键字用于别名,c++中有这样的方法吗?

即:

class special_type_of_grid
{
    protected: double** special_grid;
    public: special_type_of_grid();
}
class integrator: protected special_type_of_grid
{
    private: /*grid alias special_grid*/
    public: void integrate(){
        //...
        sum += grid[i][j]*h;
        //...}
}

这样就可以有不止一种"特殊类型的网格"。

我想一个好的方法是在构造函数中初始化指针,但它可以在私有/公共范围中完成吗?

C++没有提供任何方法来实现这一点。然而,有可能以某种方式实现,但这是一种非常糟糕的风格。

class Base {
    int x;
};
class Derived : public Base {
public:
    Derived() : y(x) {
        // ctor code here
    }
private:
    int& y;
};

这个例子表明,你可以用C++做很多奇怪的事情,但如果你认为这是唯一的解决方案,那么你在其他地方的设计就不好了。此外,您应该将: y(x)添加到所有Derived因子中。

一个更好(更OOP风格)的解决方案是使用getters/ssetter。

class Derived : public Base {
    int& y() { return x; }
};

甚至更好:

class Derived : public Base {
    int getY() { return x; }
    void setY(int value) { x = value; }
};

然而,这可能会给阅读您的代码的人带来困惑和误解。