[英]How to call virtual function for all created objects which are inherited from the one? 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.