[問題] 請問繼承/virtual function的列印順序
請教一下
class Base{
public:
virtual void func{cout<<"Base"<<endl;}
};
class Derived1:public Base{
public:
void func(){cout<<"Derived1"<<endl;}
};
class Derived2:public Derived1{
public:
void func(){cout<<"Derived2"<<endl;}
};
int main(){
Derived2 *ptr_b=new Derived2;
ptr_b->func();
Derived2 *ptr_a=dynamic_case<Derived1 *>(ptr_b);
ptr_a->func();
Base *ptr_bs=dynamic_case<Base *>(ptr_b);
ptr_bs->func();
delete ptr_b;
}
請問為什麼會列印?
ans:
Derived2
Derived2
Derived2
謝謝
--
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.249.172.69
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1426085906.A.8D4.html
→
03/11 23:28, , 1F
03/11 23:28, 1F
→
03/11 23:46, , 2F
03/11 23:46, 2F
→
03/12 00:40, , 3F
03/12 00:40, 3F
→
03/12 00:41, , 4F
03/12 00:41, 4F
→
03/12 00:42, , 5F
03/12 00:42, 5F
→
03/12 01:29, , 6F
03/12 01:29, 6F
推
03/12 13:06, , 7F
03/12 13:06, 7F
→
03/12 21:17, , 8F
03/12 21:17, 8F
→
03/12 21:45, , 9F
03/12 21:45, 9F
→
03/12 21:46, , 10F
03/12 21:46, 10F