gpt4 book ai didi

c++ - 使用派生类变量的基类函数

转载 作者:行者123 更新时间:2023-11-30 01:51:32 27 4
gpt4 key购买 nike

在 c++ 中,是否有一种标准方法可以在基类中创建可以使用派生类变量的函数?

class Foo{
private:
int x;
public:
Foo(){
x = 2;
}
void print(){
std::cout << x << std::endl;
}
};

class Derived : public Foo{
private:
int x;
public:
Derived(){
x = 4;
}

};


void main()
{
Derived a;
a.print();
}

此代码打印基类 ( 2 ) 的变量。有没有办法让许多派生类使用的函数使用该类的私有(private)变量而不将它们作为参数传递?

编辑:我的意图是避免为每个派生类编写相同的代码。例如,我总共想要一个 get_var(),但是这个函数应该返回那个自己的类的变量。我知道我可以创建 virtual 和 override,但我一直在寻找一种不需要一次又一次编写的方法。

最佳答案

不,基类不可能直接访问派生类中的任何东西。派生类与其基类共享任何内容的唯一方法是覆盖基类的虚拟成员函数。

然而,在您的情况下,这不是必需的:派生类可以在基类中设置变量 x,一旦您将其设为 protected,并删除其自己的声明作为不必要的:

class Foo{
protected: // Make x visible to derived classes
int x;
public:
Foo(){
x = 2;
}
void print(){
std::cout << x << std::endl;
}
};

class Derived : public Foo{
public:
Derived(){
x = 4;
}
};

关于c++ - 使用派生类变量的基类函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26038504/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com