Professional C++阅读笔记 chapter 29 Writing Efficient C++

发布时间 2023-05-22 01:17:05作者: 还能再学一小时

chapter 29 Writing Efficient C++

  1. 作者建议将所有class function包括析构函数 但是除了构造函数,都设为virtual的,因为virtual function的开销非常小
  2. design 和 algrithm 比语言层面的优化重要太多
  3. 在选择是通过值传递还是引用传递参数时,只有当需要复制该参数且该参数支持move语义时,才使用值传递
  4. 当参数是父类,传递的是子类时,不能用值传递,否则会造成类切割
  5. 只有当传递nullptr是需要的时候,才选择指针传参,否则都选择引用传参
  6. 尽量使用编译器提供的NRVO和RVO,即直接返回局部变量
Person createPerson() {
	person p1;
	person p2;
	return isGood() ? p1 : p2;
}

上述情况不会引起NRVO

Person createPerson() {
	person p1;
	person p2;
	if (isGood()) {
		return p1;
	} else {
		return p2;
	}

这种情况可以引起NRVO