64,682
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
struct A{
virtual void f()
{
puts("A");
}
};
struct B: A{
void f()
{
puts("B");
}
};
struct C:B{
using A::f;
};
int main(int argc, char* argv[])
{
C c;
c.f(); //输出B
c.C::f(); //输出A
}
struct A{
virtual void f()
{
puts("A");
}
};
struct B: A{
private: void f()
{
puts("B");
}
};
struct C:B{
using A::f;
};
int main(int argc, char* argv[])
{
C c;
c.f();
}
c.C::f(); //输出A
这里没用到它的动态类型。 只是::改变了name lookup的范围, 我不认为这也算多态。