0

是否有一种经典的 c 方式(除了简单地将变量设置为等于)(双关语)从名称与基类中不同的类继承变量?在python中有as别名的关键字,在c ++中有这样的方法吗?

IE:

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;
        //...}
}

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

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

4

1 回答 1

0

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

class Base {
    int x;
};

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

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

一个更好(和更多 OOP 风格)的解决方案是使用 getter/setter。

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

甚至更好:

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

但是,这可能会导致阅读您的代码的人感到困惑和误解。

于 2013-07-24T16:05:24.850 回答