6-20百度面经总结

struct和union的区别

存储多个成员时,编译器会给struct中每个成员分配存储空间,struct中存在多个成员的状态信息,union多个成员共用同一块存储空间,只会存储最后一个修改成员的信息。
都是由不同类型的成员变量组成,union只存放一个被先选中的成员,struct存放所有的成员。
在赋值时,union不同成员的赋值会对其他成员进行重写,原来成员的值就不存在了,struct成员的赋值不会相互影响。
链接

空指针可以调用成员函数

空指针可以调用不使用this指针的成员函数,不能调用虚函数
因为在调用成员函数时会隐式的调用this指针当做函数参数,类的成员函数是存储在代码区上,传入空类型时如果不使用this指针则不影响函数的运行。
对于类成员函数而言,并不是一个对象对应一个单独的成员函数体,而是此类的所有对象共用这个成员函数体。 当程序被编译之后,此成员函数地址即已确定。当调用p->func1(); 这句话时,其实就是调用A::func1(this);而成员函数的地址在编译时就已经确定, 需要注意的是,你用空指针调用成员函数,只是让this指针指向了空,所以空指针也是可以调用普通成员函数,只不过此时的this指针指向空而已,但函数fun1函数体内并没有用到this指针,所以不会出现问题。
链接

可变模板参数原理

递归调用
通过递归函数展开参数包,需要提供一个参数包展开函数和递归终止函数,递归终止函数是用来终止递归的。

逗号表达式
逗号表达式会按顺序执行逗号前面的表达式。
链接

函数对象和函数指针

函数对象也称仿函数,是一个重载了()运算符的类对象,与普通函数调用的行为类似。
函数指针本质上是一个指针,指向函数的入口地址,可以通过函数指针进入函数入口地址调用函数。
函数对象的优点:
对象可以在内部修改而不用改动外部接口,更灵活与安全。
函数对象具备存储先前调用结果的函数成员,可以维护函数调用的状态,而不必使用全局变量或静态变量存储。
在函数对象中编译器能进行内联(编译器能内联重载的操作符代码,所以就避免了与函数调用相关的运行时问题),进一步增强了性能。
可以用过模板函数对象增加函数对象的通用性。
链接

链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值