- 论坛徽章:
- 0
|
学生来回答一下,
不免错误,有遗漏,请大家指正。
Q:1. 基本类型: 各种类型是怎么进行默认转换的, ( )强制转换和各种cast都有什么区别, 编译器如何对齐, pack和align是什么东西
A:对于常见类型,分为两类
short ,int ,long ,位数长的转化为短的,会产生截断。反之,会填充。
double ,float,规则如上。
浮点转化为非浮点之间,一般情况有精度损失,非浮点转化为浮点,一般情况不会有问题。
强制转换是c、c++语言共有的,
各种cast是c++为了替代强制转换,引入的标记符。
编译器对齐:32位,就是4字节对齐
pack 常见于struct 对齐,默认情况下 ,结构体是struct是 pack大小的整数倍。(pack一般取偶数)(linux os,32bit)
align (?没用过)
---------------------------------------
Q2. 运算符:所有运算符的优化级都弄明白了么?
A:优先级表不好记,查了书,看看吧:
下面是C语言中所使用的运算符的优先级和结合性:
优先级 运算符 结合性
(最高) () [] -> . 自左向右
! ~ ++ -- + - * & sizeof 自右向左
* / % 自左向右
+ - 自左向右
> 自左向右
>= 自左向右
== != 自左向右
& 自左向右
^ 自左向右
| 自左向右
&& 自左向右
|| 自左向右
?: 自右向左
= += -= *= /= %= &= ^= |= >= 自右向左
Q什么能重载,什么不能重载, 什么能运算符不会自动继承交类?
A:翻了下谭爷爷的书:
不能重载的有5个
.(成员) *(指针) ::(位域) sizeof(长度)?:(条件)
至于运算符不能继承于基类:我认为运算符不是虚函数(?)
Q:template<typename A, typename B> operator+(const A&, const B&);
这样的全通用运算符重载, 会能重载哪些类型?
A:
没有重载和模版一起使用的经验,猜一下吧,
看起来这个运算符可以实现不同类的运算,
不过这个重载没有返回值,不懂,求解释
---------------------------------------
3. class:
Q:虚函数表是怎么回事?
A:c++对象虚函数指针存储的table,用于实现多态
Q:this指针存在object的哪个位置?
A:我认为this指针就是object在内存的起始位置
Q:多继承是怎么实现的?
A:钻石继承的话,中间2个类使用父类指针,减少存储父类的冗余。
另外一个角度说,虚表实现。
---------------------------------------
4. stl:
Q:是否知道stl里所有容器的各种操作效率和占用空间大小?
Q:stl里的算法可否精通?
Q:删除一个容器里符合某个条件的元素,怎么实现?
A:
关于stl容器效率、空间:待补充
stl中,find用得多点
删除元素时,要记着迭代器失效。删除时:先找到这个元素,再删除呗。//O(∩_∩)O~
---------------------------------------
5. iostream:
这东西搞明白么?
各种格式操作符都会用么?
自己会扩展格式操作符么?
如何给一个tcp描述符用上iostream?
A:
iostream就是用来替代stdio
格式操作符,sprintf之类,//windows上开发,还会遇到宽字符问题
---------------------------------------
6. template:
Q:模块玩明白了么?
能否实现这个宏:bop_type(A, op , B), 这个宏会得到A与B运算的类型,
比如: bop_type(int, +, double)会得到double
A:不明白
---------------------------------------
7. type traits:
Q:如何在编译时判断类型A是否是一个class,
如何判断A是否继承B?
如何判断A是否是一个整形?
A:
判断类,static_cast
判断继承,用dynamic_cast
判断整形,用type_id
---------------------------------------
8. c++11:
lamda玩得转么?
tuple类是怎么实现的?
知道有变长模版参数列表么, 用这个实现个printf如何?
shared_ptr, weak_ptr这些东西怎么用,怎么实现的?
A:lamda、tuple类、变长模版参数、weak_ptr不懂,
变长参数链表就是3个宏,一个用于指向输出的格式化字符串的头部,一个用来做游标,一个指向末尾。
对于c++有个类似的模版,没用过。
对于shared_ptr,他就是个智能指针,能够引用计数,方便资源管理。
---------------------------------------
9. boost: enable_if怎么实现的, 什么原理?
A:没有玩过
---------------------------------------
10. compiler: 你发现了几个编译器bug?
A:nothing ,
同样的代码运行于gcc ,cl,输出几个不同就让我惊喜相加,仰望这个境界啊
---------------------------------------
|
|