能不能使用struct代替模板的class/typename
答: c++保留struct主要为了兼容c语言,但是在c语言中是不存在模板的,所有没有必要在模板中支持struct声明模板形参。
重复free会发生什么
答:编译通过,运行时出错。由于free之后没有立即初始化,可能会被注入病毒。http://d0m021ng.github.io/2017/02/24/PWN/Linux%E5%A0%86%E6%BC%8F%E6%B4%9E%E4%B9%8BDouble-free/
nullptr解决了什么问题
在c语言中,0可以用来表示空指针,在c++中,不允许void指针隐式转换为其他类型指针,但是允许0作为指针类型的字面值常量。因此会遇到下面这种问题:
1 | void func(char *str){ |
这里调用的是void func(int)这个函数,在编译时也有可能报二义性错误。