20200406_類型安全
每日小知識
使用everything搜索文件時,前面添加【exe:】可以直接搜索可執行程序,如【exe:qq】。
一、相關術語
- 類型安全
類型是否安全,取決於它能否在使用中被外部轉換,例如在C語言中int可以隱式轉換爲double,double可以強轉爲int,這都是不安全的。
二、筆試題
1、#define DOUBLE(x)x+x, i=5*DOUBLE(5);求i的值
答:宏只是符號替換,沒有優先級,所以是5*5+5=30。
2、C++是不是類型安全的?
答:不是。通過reinterpret_cast強制轉換兩個不同類型的指針。
3、main函數執行以前,還會執行什麼代碼?
答:main調用之前,還會調用【全局對象】的構造函數。
4、哪些情況只能用initialization list而不能用assignment?
答:當類中含有const、reference成員變量;基類的構造函數都需要初始化列表【initialization list】。
擴展筆試題:若存在15×4=112,則系統採用的是幾進制?(騰訊2011)
答:六進制。方法:假設爲A進制,把15×4=112按權展開就是:
15 = 1×A1 + 5×A0
4 = 4×A0
112 = 1×A2 + 1×A1 + 1×A0
換成等式:
(A+5)×4 = A2 + A + 2
A2 - 3A - 18 = 0
(A - 6)(A + 3) = 0
因此A有兩個值6或-3,但進制不存在負數,所以結果爲【六】進制。
驗證一下:15轉換十進制後是【11】,4轉換十進制後是【4】,11×4=44,112轉換十進制後是【44】。
知識擴展
C++的四種類型轉換。
本文歸類
建議歸類到【C++】。
明日計劃
1、描述內存分配方式以及它們的區別。
2、struct與class的區別?
3、當類A中沒有任何成員變量與成員函數時,sizeof(A)的值是多少?
參考文獻:
《C++筆試面試寶典2011版.docx》
如何在markdown中打出上標、下標和一些特殊符號
https://www.jianshu.com/p/80ac23666a98