C++何时使用`const` vs`const&`作为成员函数修饰符?

Qqw*_*qwy 6 c++ const member-functions c++11

我正在学习C++.我无法理解的一件事是,何时放置&,constconst &在声明成员函数之后.

一个例子:

class Foo
{
    // When to use which one?
    bool bar(int baz);
    bool bar(int baz) const;
    bool bar(int baz) &;
    bool bar(int baz) const &;
}
Run Code Online (Sandbox Code Playgroud)

我的直觉说:

  • 使用constconst &尽可能使用,因为它声明该函数不会改变对象,因此在const myfoo某个地方仍然可以使用.
  • 传递&const &不会复制调用成员函数的对象,而没有&后面的函数会.
  • 因此,const &除非你不能,否则总是使用?

这些陈述是真的吗?

到目前为止,我无法找到关于此的信息,很可能是因为我不知道"改变函数行为的函数背后的这些东西"的正确术语.

何时使用哪个版本?