日期:2014-05-16  浏览次数:20808 次

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++函数有函数名,函数返回值,参数个数,和参数类型。如果这几个有一个不同,那么就是不同的函数