为什么这个函数头不是最优的
Why is this function header not optimal
项目的一些背景
课堂书籍->包含书籍信息
Class BooksDB->可以添加/删除/搜索书籍的书籍数据库。。。。
现在我得到了下面的函数头,它打印放置在BooksDB图书矢量中的图书。
void printBookDetails(const std::vector<Book*>& books)
此函数接收书籍指针的矢量作为常量引用,并将其复制到相同类型的新矢量中。根据书籍唯一的ISBN对新矢量进行排序并打印。
现在有人问我,为什么上面的函数头在接收参数的方式上不是最佳的,应该如何重写,以及为什么选择这个函数头。
我很想得到一个建议,因为我已经阅读了SO上关于将对象传递给函数的所有内容,但无法理解。。
在printBookDetails
中,如果要复制矢量,则可以将其更改为
void printBookDetails(std::vector<Book*> books)
让副本为您生成。这样可以避免在函数中执行此操作。
另一个好处是,如果将r值传递给函数,则应引入移动语义,从而节省复制向量的成本。
相关文章:
- C++:调用没有匹配函数:为什么需要一个空的构造函数?
- 我是C++新手,我想知道,为什么在c ++中使用纯虚函数?为什么要使用纯虚函数?
- 无法重新声明构造函数.为什么?
- 通过指针调用模板类成员函数 [为什么这是有效的 c++]?
- 将指针传递给函数 - 为什么我无法打印地址?
- 我打算调用initializer_list构造函数,如果存在,则事先调用复制构造函数:为什么?
- C ++中的函数为什么我的编译器无法识别错误()
- 成员函数与友元函数:为什么是一个而不是另一个?
- 可怕的元函数:为什么它们更快?
- 调用自动构造函数:为什么我的类型不完整
- cpp 没有匹配的函数调用来调用构造函数.为什么
- POW函数为什么返回意外值
- 模板中的友元函数(为什么这在Visual Studio中失败,而不是GCC和Clang)
- 显式函数为什么
- C++构造函数初始化列表调用默认构造函数.为什么
- 未调用构造函数?为什么
- C++:自动向量重新分配调用复制构造函数?为什么
- C++ / 多态性 / 虚函数 / 为什么我的子类的函数没有被调用?
- Linux vs Windows std::map 赋值构造函数(为什么会有这样的区别?)
- 错误:使用已删除的函数.为什么?