author:
- luixiao1223
title: Pass by reference to const替换 pass by value
reference to const
bool validStudent(const Student& s);
错误示范
class Window {
public:
std::string name() const;
virtual void display() const;
};
class WindowWithScrollBars:public Window{
public:
virtual void display() const;
};
void printNameAndDispaly(Window w) // 这里是传值
{
std::cout<<w.name();
w.display();
}
//假设现在有一个 WindowWithScrollBars
WindowWithScrollBars wwsb;
printNameAndDispaly(wwsb); //这里是传值会构造一个Window对象。所以不会产生出正确的调用。
修正
void printNameAndDispaly(const Window& w) // 这里是传值
{
std::cout<<w.name();
w.display();
}
tips
- 小类型也不该传值。最好还是穿引用const类型。
- 内置类型可以传值。通常传值会更快。