需要时刻牢记的是:函数的形参都是左值,即使它的类型是右值引用,它也是左值,因为它可以被取地址。
主要是区分什么是右值,满足以下二者之一即可:
- 临时对象
- 无法位于赋值符号右边的对象
使用constexpr
以让编译器来检查该值是否是常量表达式,降低程序员负担。
除非是需要修改容器元素的内容,否则在使用迭代器的时候,应该使用其const
版本,也就是指向const
类型元素的指针,以避免误操作。
简单来讲就是对于枚举类型,也需要将其存放于命名空间中,以避免枚举中元素对外部标识符的污染。
在 c 中,typedef
是我经常使用的别名语法。但在 cpp 中,using
才是更好的选择。
理解了 auto
的推导原则后,就需要认识到使用 auto
所带来的便利性和缺陷,才能正确的使用它。
在 c 中,通常使用NULL
表示一个空指针,但是在 cpp 中有更优的nullptr
可供选择。
理解 cpp 是如何进行类型推导的,这样在使用时才不会踩太多坑……
这里的资源主要是:内存、文件描述符、互斥锁、数据库连接、socket 等,一旦不使用它们,都要归还给系统。
传统指针具有以下缺陷:
delete
,还是使用其它专有的释放函数delete
释放资源时,到底是使用delete
还是delete[]
,这需要小心使用,否则会造成内存泄漏或未定义行为使用智能指针变能够最大化的避免以上问题。