说我有一个基础班

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};
};

那是对的吗? 那是用于虚拟功能吗?

===============>>#1 票数:1

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

===============>>#2 票数: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将不会被覆盖

  ask by jazzybazz translate from so

未解决问题?本站智能推荐: