Re: [问题] 两题C++面试题的询问

楼主: wawi2 (@@)   2018-04-06 02:47:00
Regarding the first question, the answer shall be B0.
The virtual keyword suggests the function binding occur in run-time.
However the default parameter is static binding and is bound in the compilatio
n time.
When we compile the program, the parameter a is equal to zero by default.
The compiler has no way to know which function gets invoked in the run time.
I saw many programmers committing such mistake (note: I use the verb commit in
stead of make). It's a disaster.
※ 引述《plsmaop (plsmaop)》之铭言:
: ※ 引述《Cosmology (宇宙学型男)》之铭言:
: : 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阿...
: : 有前辈可以指点我哪里概念有错误吗?
: : 或是能够提供方向让我找资料 谢谢
: https://en.m.wikipedia.org/wiki/Data_structure_alignment
: 在Typical alignment of C structs on x86这个条目下有说,会把整个struct凑成其

: 最大的type的大小的倍数
: 如果我没有理解错的话,整个struct大小会是8*3=24
: Int 4
: Char 1 ,塞一个1 ,short 2
: Double 8
: Char 1,塞7个
作者: TobyH4cker (Toby (我要当好人))   2018-04-09 13:03:00
+1 for brief explanation. everyone use VF shouldknow that.

Links booklink

Contact Us: admin [ a t ] ucptt.com