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