这个继承类调用的方法(虚函数)? C ++

时间:2013-04-16 00:04:20

标签: c++ inheritance virtual

说我有一个基类

class Base
{

public:
void A() {do stuff};
void B() {A(); do stuff};
};

和派生类

class Derived : public Base
{
public:
void A() {do things}
};

Derived derived1;
derived1.B();

将B调用基类的A或派生类的A吗?

我怀疑B会调用基类的A,为了让它使用新重新定义的A,我必须将其设为虚拟:

class Base
{

public:
virtual void A() {do stuff};
void B() {A(); do stuff};
};

这是对的吗?是虚拟功能用于什么?

2 个答案:

答案 0 :(得分:1)

是的,在两个方面都是正确的......

答案 1 :(得分:0)

试试这个

class Base
{
public:
virtual void A() {do stuff};
void B() { do stuff};
};

class Derived : public Base
{
public:
void A() {do things}
void B() {do things}
};

Derived d;
Base *p = &d;
p->A();
p->B();

功能B不会被覆盖