C++ --- 如果同时定义了两个函数,一个带const,一个不带,会有问题吗?
Posted Overboom
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ --- 如果同时定义了两个函数,一个带const,一个不带,会有问题吗?相关的知识,希望对你有一定的参考价值。
如果函数名相同,在相同的作用域内,其参数类型、参数个数,参数顺序不同等能构成函数重载。
有趣的是如果同时在类中,对于函数名相同参数列表也相同的成员函数的const函数和非const函数能够构成重载。
它们被调用的时机为:如果定义的对象是常对象,则调用的是const成员函数,如果定义的对象是非常对象,则调用重载的非const成员函数。
#include <iostream>
int override_test(int a, int b)
{
return a + b;
}
int override_test(int a, float b)
{
return a + b;
}
/*
int override_test(int a, float b) const
{
return a + b;
}
*/
class OverrideTest
{
public:
int Function(int a, int b);
int Function(int a, float b);
int Function(int a, float b) const;
private:
int a;
int b;
};
int main(void)
{
return 0;
}
以上是关于C++ --- 如果同时定义了两个函数,一个带const,一个不带,会有问题吗?的主要内容,如果未能解决你的问题,请参考以下文章
explicit:C++规定,当定义了只有一个参数的构造函数时,同时也定义了一种隐式的类型转换