C++可以根据返回值来区分不同的函数吗?
C++ 可以根据返回值来区分不同的函数???
C/C++ code
template<>
inline Int8 CDataConvertor::StrToInt(const UInt8* pBuf, UInt8 uLen)
{
return (StrToIntByAtoi<Int8>(pBuf, uLen));
}
template<>
inline Int16 CDataConvertor::StrToInt(const UInt8* pBuf, UInt8 uLen)
{
return (StrToIntByAtoi<Int16>(pBuf, uLen));
}
template<>
inline Int32 CDataConvertor::StrToInt(const UInt8* pBuf, UInt8 uLen)
{
return (StrToIntByAtoi<Int32>(pBuf, uLen));
}
------解决方案--------------------楼上的别误导,不能通过返回值来区分函数的。
打个比方, int fun(); 和 char fun();
调用者很可能这样调用函数
fun();
如果通过返回值来区分,这时候编译器就不知道该怎么办了
所有不能通过返回值来区分函数的。
------解决方案--------------------不能。。。。
C++ 可以通过参数不同来区分,但返回值是不行的。。
通过参数是因为在编译的时候就对函数做了重新命名。
------解决方案--------------------楼主说的就是函数重载吧,函数重载要求函数必须是行参列表不一样,行参个数不一样,类型不一样,或者是排列次序不一样,总之是要行参列表不一样,这样才能实现重载,返回值不同不能实现重载
------解决方案--------------------返回值类型不属于函数的 signature,
对于通过重写成员函数写改变了返回值类型的, 称为返回值协变,
是一个技术.
------解决方案--------------------重载函数:出现在相同作用域中的两个函数,具有相同的名字而形参表不同。
不能仅仅基于不同的返回类型而实现重载。函数名和形参表完全相同,仅仅是返回类型不同,会被视为重复声明。
------解决方案--------------------不能 函数重载 也只是判断函数 个数 类型 顺序
不判断 返回值的
------解决方案--------------------不能,重载只是参数类型和个数
------解决方案--------------------标示c++函数有函数名,函数返回值,参数个数,和参数类型。如果这几个有一个不同,那么就是不同的函数