Jja*_*ang 0 c++ inheritance overloading
所以我在尝试在c ++中重载时遇到了这个问题:我有这些类:
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;}
};
Run Code Online (Sandbox Code Playgroud)
然后我做:
Data *D=new A();
D->f(4);
Run Code Online (Sandbox Code Playgroud)
我希望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;}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
146 次 |
| 最近记录: |