为什么只调用derived class成员函数?
Why is only derived class member function called?
在下面的代码中:
请告诉我为什么只调用派生的class成员函数,是因为hiding
吗?还有为什么在b.func(1.1);
中没有报错,参数是int x
.
#include <bits/stdc++.h>
using namespace std;
class A {
public:
virtual int func(float x)
{
cout << "A";
}
};
class B : public A {
public:
virtual int func(int x)
{
cout << "B";
}
};
int main()
{
B b;
b.func(1); // B
b.func(1.1); // B
return 0;
}
是的,因为隐藏。这是您应该始终在要覆盖的函数上添加特殊标识符 override
的主要原因之一:
class B : public A {
public:
virtual int func(int x) override // <- Note the override here
{
cout << "B";
}
};
这将导致编译器抱怨没有实际覆盖。
和floating point values can be implicitly converted to integers.
在下面的代码中:
请告诉我为什么只调用派生的class成员函数,是因为hiding
吗?还有为什么在b.func(1.1);
中没有报错,参数是int x
.
#include <bits/stdc++.h>
using namespace std;
class A {
public:
virtual int func(float x)
{
cout << "A";
}
};
class B : public A {
public:
virtual int func(int x)
{
cout << "B";
}
};
int main()
{
B b;
b.func(1); // B
b.func(1.1); // B
return 0;
}
是的,因为隐藏。这是您应该始终在要覆盖的函数上添加特殊标识符 override
的主要原因之一:
class B : public A {
public:
virtual int func(int x) override // <- Note the override here
{
cout << "B";
}
};
这将导致编译器抱怨没有实际覆盖。
和floating point values can be implicitly converted to integers.