簡體   English   中英

該繼承的類將調用哪個方法(虛擬函數)? C ++

[英]Which method will this inherited class call (virtual function)? c++

說我有一個基礎班

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

那是對的嗎? 那是用於虛擬功能嗎?

是的,在兩個方面都正確...

嘗試這個

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將不會被覆蓋

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM