c++ - 根据返回值重载 C++ 函数

  显示原文与译文双语对照的内容
134 1

我们都知道,你可以根据参数重载函数:

int mul(int i, int j) { return i*j; }
std::string mul(char c, int n) { return std::string(n, c); } 

你能根据返回值重载一个函数?根据返回值的使用方式定义返回不同内容的函数:

int n = mul(6, 3);//n = 18
std::string s = mul(6, 3);//s ="666"
//Note that both invocations take the exact same parameters (same types)

你可以假定第一个参数位于 0 -9之间,无需验证输入或者有任何错误处理。

时间:原作者:0个回答

67 5
class mul
{
public:
 mul(int p1, int p2)
 {
 param1 = p1;
 param2 = p2;
 }
 operator int ()
 {
 return param1 * param2;
 }
 operator std::string ()
 {
 return std::string(param2, param1 + '0');
 }
private:
 int param1;
 int param2;
};

我不会用这个。

原作者:
...