whyFunctionCannotOverLoadByReturnValue

发布时间 2023-07-03 22:12:45作者: Eton..Bee

whyFunctionCannotOverLoadByReturnValue ?

/*eton@230703 whyFunctionCannotOverLoadByReturnValue.cc */
# include <iostream>
/*
 * because cannot know the return type before confirm which funciton to be invoke.!!!
https://stackoverflow.com/questions/9568852/overloading-by-return-type
 *
 *
 */

using namespace std;
int fxxx(int a){
cout<<"int a="<<a<<"\n";
return 0;
}

float fxxx(unsigned int a){
cout<<"f int a="<<a<<"\n";
return 1.2;
}


class My {
public:
    int getInt(int a)const{

        cout<<"int a="<<a<<"\n";
    }
    char getChar(int a)const
    {

        cout<<"char a="<<a<<"\n";
    }
};

class Proxy
{
    My const* myOwner;
public:
    Proxy( My const* owner ) : myOwner( owner ) {}
    operator int() const
    {
        return myOwner->getInt(42);
    }
    operator char() const
    {
        return myOwner->getChar(43);
    }
};

int main()
{
int a=fxxx(42);
float b=fxxx(43);
double c=fxxx(44);

My _m;
Proxy p(&_m);

a=int(p);
b=char(p);
//error: conversion from ‘Proxy’ to ‘double’ is ambiguous
//c=double(p);


return 0;
}