c++ - 使用一个实现其他类方法的类方法以及它自己的类方法

标签 c++ class polymorphism multiple-inheritance

我在用 C++ 编程,我有 3 个相互继承的类:

Hatchback -> Car -> Vehicle;

我想使用 void print() 方法打印每个类的属性,

每个类都有打印自己属性的 Print 方法。

void Vehicle::print()
{
   // Vehicle attributes
}

void Car::print()
{
   // Car attributes
}

void Hatchback::print()
{
   // Hatchback Attributes
}

我创建了一个对象,它在一个构造函数中初始化所有类的所有属性:

Hatchback hatchback("L880UCD", "Vauhall", "Corsa", 
                    "White", "None", "Car", "Hatchback", 
                    3, 5, "Manual", 3, 2, 1);

问题是,我想使用一种打印方法打印所有属性,所以当我调用时,

object.print();

它贯穿了车辆打印方法,然后是汽车打印方法,然后是两厢车打印方法。

我知道我可以打印 Hatchback 打印方法的所有属性,因为一切都是继承的。如果可能的话,我想避免在一个类方法中打印所有 3 个类的数据......我宁愿每个类都处理它自己的方法和函数!

不仅如此,我还有很多其他类别,包括全部继承自车辆的汽车、公共(public)汽车和卡车,以及全部继承自汽车、卡车和公共(public)汽车的容器、油轮、平板车、摩托车、公交等。

所以我不想在每个底层派生类中都编写 Print Vehicle!

如果有办法做到这一点,我将不胜感激。

我尝试过使用虚函数,但得出的结论是它们只是在运行时选择使用哪种方法,而不是合并打印函数。

感谢阅读!抱歉,如果这是一个模糊或菜鸟问题...我是 Stack Overflow 的新手! :)

最佳答案

如果您问是否可以从派生类调用基类方法,那么可以:

void Vehicle::print() {
   std::cout << "Vehicle attributes" << std::endl;
}

void Car::print() {
   Vehicle::print();
   std::cout << "Car attributes" << std::endl;
}

关于c++ - 使用一个实现其他类方法的类方法以及它自己的类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5273803/

相关文章:

c# - 如何声明所需类型以避免 ".. Ambigious reference.."

javascript - ES6 - 在父构造函数方法中获取子类属性

c++ - 多态中的引用和指针

haskell - 当没有绑定(bind)时,haskell 中缺乏多态推断

c++ - 在 C++ 中使用 vector 从文本文件中读取矩阵

c++ - STL map and list using in c++的一些问题

c++ - Curlpp,请求数据不完整

c++ - 无法从 C/C++ 程序访问环境变量

c++ - 如何在自己的定义中缩写类名?

java - Java 中的继承 - "Cannot find symbol constructor"