使用派生类变量的基类函数
Base class functions that use derived class variables
在 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 ( 的变量。有没有办法使许多派生类使用的函数使用类的私有变量而不将它们作为参数传递?
编辑:我的目的是避免为每个派生类编写相同的代码。例如,我想要一个 get_var((,但这个函数应该返回该类的变量。我知道我可以进行虚拟和覆盖,但我正在寻找一种不需要一次又一次写作的方式。
不,基类无法直接访问派生类中的任何内容。派生类与其基类共享任何内容的唯一方法是重写基类的虚拟成员函数。
但是,在您的情况下,这不是必需的:一旦您将其protected
设置为基类,派生类就可以在基类中设置变量x
,并删除其自己的声明作为不必要的:
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++ 继承:将子类传递给需要基类的函数并获取子类行为
- 将自定义函数传递到基抽象类中以延迟执行
- 调用原子的 store() 时可以调用基类型类的函数吗?C++
- C++17 使用驱动类常量作为基类构造函数的参数来初始化基类构造函数
- 派生类(构造函数具有参数)和基类(构造函数缺少参数)之间没有可行的转换
- 如何将子类作为函数的参数传递给期望基类,然后将该对象传递到指向这些抽象类对象的指针向量中?
- 从基类调用函数的多态性
- 在成员构造函数之后调用基类构造函数
- 在C++单元测试上下文中,抽象基类是否应将其他抽象基类作为函数参数
- 如何在将原始指针移动到基类构造函数之前从unique_ptr中提取原始指针
- 如何在具有相同函数名称的派生类中调用基类的函数
- 我不能访问基类的函数
- 根据模板参数引用不同基类的函数
- 在基/派生类中调用C++的纯虚函数
- C++ 模板化基类的函数模板专用化
- 如果基类指针无法访问派生类成员函数,那么多态性有什么方便的呢?
- 如何在C++中调用基类虚函数
- 指向从指针派生类成员函数的指针,指向基类成员函数
- C++:在共享对象中调用抽象基类构造函数/未定义的符号
- 如何在 C++ 中将参数传递给基类构造函数