类中重载的方法

时间:2016-10-06 09:05:30

标签: c++

在课堂上这怎么可能。函数重载不计算返回类型。

DataViewModel* DataViewCtrlBase::GetModel()
{
    return m_model;
}

const DataViewModel* DataViewCtrlBase::GetModel() const
{
    return m_model;
}

1 个答案:

答案 0 :(得分:3)

DataViewCtrlBase::GetModel()同时具有非const - 限定和const限定的重载。只有在非const上下文中访问当前类实例时,才会调用非const重载。

您可以将这些方法视为像(伪代码)一样重载:

DataViewModel* GetModel(DataViewCtrlBase* this) { /* ... */ }             /* (0) */
const DataViewModel* GetModel(const DataViewCtrlBase* this) { /* ... */ } /* (1) */

示例:

DataViewCtrlBase x;

auto& x_non_const = x;
x_non_const.GetModel(); // Calls (0) | Equivalent to: GetModel(x_non_const)

const auto& x_const = x;
x_const.GetModel();     // Calls (1) | Equivalent to: GetModel(x_const)