[問題] 兩題C++面試題的詢問
先說是面試題 所以會有一些奇怪的寫法
晚輩還是剛入行的新人 若有冒犯 請見諒
1.
class A
{
public:
virtual void foo(int a = 0)
{
printf("A %d\n", a);
}
};
class B : public A
{
public:
virtual void foo(int a = 1)
{
printf("B %d\n", a);
}
};
A *p = new B();
p->foo();
我答結果是 B 1
面試官說你回去試試看 結果回家測試的結果是 B 0
我可以理解virtual function的用法
但是唯獨那個a我並不能理解為什麼是0...
2.
struct test
{
int a;
char b;
short c;
double d;
char e;
};
test這個大小是多少?
我可以理解關於記憶體對齊的問題
所以我答總共是24 bytes
面試官接著問為什麼是24 以及那他們在系統內的記憶體位置是如何?
我回答
int 4
char 4(對齊後)
short 4(對齊後)
double 8
char 4(對齊後)
所以總共是24 (我的概念可能有錯...)
他說24是對的 但是位置的概念不正確 叫我回去測試看看
我回家測試(以下都起始位置)
a 9435088
b 9435092
c 9435094
d 9435096
e 9435104
我理解可能char short那邊可能答錯了
但是即便是這樣 e那個位置對齊以後末三碼應該是108
88到108應該也是20個bytes阿...
有前輩可以指點我哪裡概念有錯誤嗎?
或是能夠提供方向讓我找資料 謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 136.60.160.77
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1522727559.A.A71.html
→
04/03 12:00,
7年前
, 1F
04/03 12:00, 1F
→
04/03 12:01,
7年前
, 2F
04/03 12:01, 2F
→
04/03 12:03,
7年前
, 3F
04/03 12:03, 3F
→
04/03 12:03,
7年前
, 4F
04/03 12:03, 4F
→
04/03 12:11,
7年前
, 5F
04/03 12:11, 5F
→
04/03 14:06,
7年前
, 6F
04/03 14:06, 6F
推
04/03 15:34,
7年前
, 7F
04/03 15:34, 7F
→
04/03 15:34,
7年前
, 8F
04/03 15:34, 8F
→
04/03 15:34,
7年前
, 9F
04/03 15:34, 9F
→
04/03 15:39,
7年前
, 10F
04/03 15:39, 10F
→
04/03 15:39,
7年前
, 11F
04/03 15:39, 11F
推
04/03 20:42,
7年前
, 12F
04/03 20:42, 12F
推
04/03 21:12,
7年前
, 13F
04/03 21:12, 13F
推
04/03 22:55,
7年前
, 14F
04/03 22:55, 14F
推
04/04 10:37,
7年前
, 15F
04/04 10:37, 15F
→
04/04 10:37,
7年前
, 16F
04/04 10:37, 16F
→
04/04 10:37,
7年前
, 17F
04/04 10:37, 17F
→
04/04 10:38,
7年前
, 18F
04/04 10:38, 18F
推
04/04 13:15,
7年前
, 19F
04/04 13:15, 19F
推
04/04 13:45,
7年前
, 20F
04/04 13:45, 20F
推
04/04 13:50,
7年前
, 21F
04/04 13:50, 21F
→
04/04 13:50,
7年前
, 22F
04/04 13:50, 22F
推
04/04 22:13,
7年前
, 23F
04/04 22:13, 23F
推
07/08 15:42,
6年前
, 24F
07/08 15:42, 24F
討論串 (同標題文章)