用const复制相同的方法?

pro*_*eek 1 c++ methods const

在C++中,我看到了这段代码.

public: 
    Ports& GetPorts();
    const Ports& GetPorts() const;
Run Code Online (Sandbox Code Playgroud)

为什么有必要使用const的另一种方法?编译器如何决定调用哪个方法?

Jer*_*ock 6

如果您调用x.GetPorts()并且x是非const对象,则将调用第一个版本.另一方面,如果xconst对象,则将调用第二个版本.这种代码说"如果对象是可修改的,允许修改结果GetPorts();如果对象是const,则不允许修改结果." 如果匹配,编译器将更喜欢第一个版本; 但是,如果对象是,则不会出现const,因此将使用第二个版本.