gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 19:46:58 25 4
gpt4 key购买 nike

我在用 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/

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