【发布时间】:2020-04-26 03:15:29
【问题描述】:
在这段代码中:
include<iostream>
using namespace std;
class A
{
public:
A(){} //constructor
void fun()
{
cout<<"in non-const fun"<<endl;
}
void fun() const
{
cout<<"in const fun"<<endl;
}
};
int main()
{
A obj;
A c_obj;
obj.fun()
c_obj.fun();
return 0;
}
如果c_obj 是class A 的const 对象,它将调用const 版本的fun()。
non-const 类对象可以调用fun() 的任何版本,但它们一直调用non-const 版本,直到并且除非non-const 版本被删除/注释 - 为什么?
即使定义的顺序改变了,行为也保持不变(只是试图检查它是否影响任何东西)。
【问题讨论】:
-
因为非
const对象将调用非const版本的函数(如果可用)。您已经很好地描述了预期的行为。你在寻找什么样的理由? -
这能回答你的问题吗? Const and Non-Const Operator Overloading
-
因为 C++ 标准是这么说的?
-
@BessieTheCow 你能给我任何链接吗?
标签: c++