[問題] 想請教一個C++考題
想請教各位版大...以下是一個C++面試題目,要考執行結果印出的是什麼
程式碼如下:
#include <iostream>
#include <cstdio>
using namespace std;
class A
{
public:
A() { p(); }
~A(){ p(); }
virtual void p() { q(); }
virtual void q() { cout<<"A"; }
};
class B:public A
{
public:
B() { p(); }
~B() { p(); }
void q() { cout<<"B"; }
};
int main()
{
A *ptr=new B;
delete ptr;
return 0;
}
標準答案為ABA,與我實際跑過的結果相符。我比較迷惑的是為什麼
執行解構子的過程只印了最後一個A呢?ptr此時指向的是B物件,不
是應該先執行物件B的解構子嗎?麻煩各位指正小弟的觀念了,謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.124.166.118
→
06/07 23:20, , 1F
06/07 23:20, 1F
→
06/07 23:20, , 2F
06/07 23:20, 2F
→
06/07 23:25, , 3F
06/07 23:25, 3F
推
06/07 23:25, , 4F
06/07 23:25, 4F
→
06/07 23:26, , 5F
06/07 23:26, 5F
※ 編輯: NcuCsie 來自: 122.124.166.118 (06/07 23:32)
推
06/07 23:45, , 6F
06/07 23:45, 6F
→
06/07 23:49, , 7F
06/07 23:49, 7F
推
06/07 23:57, , 8F
06/07 23:57, 8F
→
06/08 00:21, , 9F
06/08 00:21, 9F
→
06/08 00:21, , 10F
06/08 00:21, 10F
→
06/08 00:23, , 11F
06/08 00:23, 11F
推
06/08 00:48, , 12F
06/08 00:48, 12F
推
06/08 00:53, , 13F
06/08 00:53, 13F
推
06/08 00:56, , 14F
06/08 00:56, 14F
→
06/08 00:56, , 15F
06/08 00:56, 15F
→
06/08 00:57, , 16F
06/08 00:57, 16F
→
06/08 00:58, , 17F
06/08 00:58, 17F
推
06/08 00:59, , 18F
06/08 00:59, 18F
→
06/08 00:59, , 19F
06/08 00:59, 19F
→
06/08 01:00, , 20F
06/08 01:00, 20F
→
06/08 01:01, , 21F
06/08 01:01, 21F
→
06/08 01:02, , 22F
06/08 01:02, 22F
討論串 (同標題文章)