gpt4 book ai didi

c++ - 继承C++中的重载

转载 作者:太空宇宙 更新时间:2023-11-04 15:24:59 24 4
gpt4 key购买 nike

所以我在尝试在 C++ 中重载时遇到了这个问题:我有那些类(class):

class Data
{
public:
void virtual f(){cout<<"In data!"<<endl;}
};

class A: public Data
{
public:
void f(int x){cout<<"Class A int is: "<<x<<endl;}

};

然后我做:

Data *D=new A();
D->f(4);

我希望 Data 的 f() 函数对 A 类的 f() 函数起作用,因为我是虚拟的,但它不会。

有什么方法可以让它发挥作用吗?

最佳答案

这不是同一个函数,派生类中的函数接受一个 int 参数。

那甚至不应该编译,因为 Data 没有名为 f(int) 的方法。

要使多态性起作用,您需要相同的签名:

class Data
{
public:
void virtual f(int){cout<<"In data!"<<endl;}
// |
// dummy parameter
};

class A: public Data
{
public:
void f(int x){cout<<"Class A int is: "<<x<<endl;}
};

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

24 4 0
文章推荐: c++ - 在对象的构造函数中声明对象数组?
文章推荐: Jquery:将 标记的焦点从单个单词移动到整个文本
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com