码了一天的教程,没有保存关机了,所以决定每一个条款发一篇博客,看完这本书之后再以章节排版
用引用传递代替值传递的好处:
- 成本降低
//此会造成构造函数和析构函数的多次创建
bool validateStudent(Student s)
Student plato;
bool platoIsOK = validateStudent(plato)
改成
bool validateStudent(const Student& s);
- 避免对象分割
void printNameDisplay(Window w)
{
std::cout << w.name();
w.display();
}
...
WindowWithScrollBars wwsb;
printNameDispllay(wwsb) //此会造成对象切割
应该修改为
void printNameAndDisplay(const Window& w)
{
std::cout << w.name();
w.display();
}
注意:
尽量使用引用传递替换值传递,可避免上述两个问题
==以上规则不适合内置类型,以及STL的迭代器和函数对象,对他们而言,值传递比较适当。