一名难寻 2017-11-08 02:15 采纳率: 100%
浏览 1183
已采纳

c++常量重载函数如何调用?

函数重载需要参数不同, 但如果一个函数标记为常量(accessor)也可以通过编译, 但却调用不成功.
比如:
class T
{
public:

T(int x=0)
    :value{x}{}

// 普通引用
int & v()
{
    cout << "normal reference" << endl;
    return value;
}

// 常态引用
const int & v() const
{
    cout << "const refrence" << endl;
    return value;
}

private:
int value;

};

int main()
{
T t{3};
int & a = t.v();
const int & b = t.v();
return 0;
}

结果静态引用还是使用的普通引用函数, 那里出问题了呢?

  • 写回答

3条回答 默认 最新

  • kouzc 2017-11-08 03:24
    关注

    const成员函数可以被非const成员函数重载,这种情况下,类对象的常量性决定调用哪个函数
    const T A1;

    T A2;

    A1.v(); // 调用const成员函数

    A2.v(); // 调用非const成员函数

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 用PLC设计纸袋糊底机送料系统
  • ¥15 simulink仿真中dtc控制永磁同步电机如何控制开关频率
  • ¥15 用C语言输入方程怎么
  • ¥15 网站显示不安全连接问题
  • ¥15 github训练的模型参数无法下载
  • ¥15 51单片机显示器问题
  • ¥20 关于#qt#的问题:Qt代码的移植问题
  • ¥50 求图像处理的matlab方案
  • ¥50 winform中使用edge的Kiosk模式
  • ¥15 关于#python#的问题:功能监听网页