[問題] 關於 C++ 的繼承與建構解構式
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
G++
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
無
問題(Question):
http://codepad.org/r7PfzyAs
各位大大
今天去趨勢科技面試
其中有一題 C++ 考題是關於物件導向繼承的問題 , Code 如下
題目問到: What's the output?
回家以後把它 keyin compiler 後還是不是很了解
想請問各位為何順序是這樣呢 我應該怎麼理解(or背)它呢?
還有 A a* = new B(); 與 A a* = new A();
在記憶體空間與實作上我應該怎麼理解呢?
(我只知道 A a* = new B()時 , virtual關鍵字會有影響)
謝謝各位!
餵入的資料(Input):
無
預期的正確結果(Expected Output):
B class B object inherit A
Ain
Bin
Bout
Aout
A class B object
Ain
Bin
Aout
錯誤結果(Wrong Output):
無錯誤
程式碼(Code):(請善用置底文網頁, 記得排版)
http://codepad.org/r7PfzyAs
#include <iostream>
using namespace std;
class A
{
public:
A(){cout << "Ain \n";}
~A(){cout << "Aout \n";}
};
class B : public A
{
public:
B(){cout << "Bin \n";}
~B(){cout << "Bout \n";}
};
int main()
{
cout << "B class B object inherit A\n";
B *b = new B();
delete b;
cout << "A class B object\n";
A *a = new B();
delete a;
return 0;
}
補充說明(Supplement):
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.36.177.141
→
12/17 17:27, , 1F
12/17 17:27, 1F
→
12/17 17:27, , 2F
12/17 17:27, 2F
→
12/17 17:32, , 3F
12/17 17:32, 3F
推
12/17 17:36, , 4F
12/17 17:36, 4F
推
12/17 17:36, , 5F
12/17 17:36, 5F
→
12/17 17:39, , 6F
12/17 17:39, 6F
→
12/17 17:39, , 7F
12/17 17:39, 7F
→
12/17 17:51, , 8F
12/17 17:51, 8F
→
12/17 17:52, , 9F
12/17 17:52, 9F
→
12/17 17:53, , 10F
12/17 17:53, 10F
推
12/17 18:20, , 11F
12/17 18:20, 11F
→
12/17 18:21, , 12F
12/17 18:21, 12F
→
12/17 18:21, , 13F
12/17 18:21, 13F
→
12/17 18:22, , 14F
12/17 18:22, 14F
→
12/17 18:23, , 15F
12/17 18:23, 15F
→
12/17 18:32, , 16F
12/17 18:32, 16F
推
12/17 18:40, , 17F
12/17 18:40, 17F
推
12/17 18:54, , 18F
12/17 18:54, 18F
推
12/18 09:03, , 19F
12/18 09:03, 19F
→
12/18 09:04, , 20F
12/18 09:04, 20F
→
12/18 09:05, , 21F
12/18 09:05, 21F
推
12/18 09:07, , 22F
12/18 09:07, 22F
→
12/18 09:09, , 23F
12/18 09:09, 23F
推
12/20 13:37, , 24F
12/20 13:37, 24F
推
12/20 14:09, , 25F
12/20 14:09, 25F
→
12/20 14:10, , 26F
12/20 14:10, 26F
→
12/20 14:17, , 27F
12/20 14:17, 27F