gpt4 book ai didi

类继承的C++问题

转载 作者:行者123 更新时间:2023-12-03 18:43:03 24 4
gpt4 key购买 nike

我有一些带有一些变量和函数的基类以及多个子类。我想尽可能减少子类所需的代码量。

我的代码示例:

#include <iostream>

class base{
public:
int a = 10;
int b;
void print()
{
std::cout << a <<std::endl;
}
};

class child: public base
{
public:
int a;
};

int main()
{
child ch;
ch.a = 20;
ch.print();

}

由于打印了结果编号 10,这意味着使用了基类变量 a,但如果存在子类变量,我需要使用它。所以这个例子的预期输出是 20。

最佳答案

在您的子类中覆盖基类中的变量是一个重大错误。这会以惊人的方式反击你。

发生的情况是 ch.a 来自子类(被覆盖的版本),但 print 函数是基类的一部分,因此它将打印该版本。

如果有一些理由这样做(我想不出一个),那么您可以在分配之前将 ch 类型转换为基类。像这样的:

(static_cast<base>(ch)).a = 20;

但更好的选择是永远不要重载变量名。

关于类继承的C++问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67255790/

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