HM097 同名调度

HM097 同名调度

HM097 同名调度

来源: 第 97 集 函数高级-函数重载-基本语法

难度: 入门

时间限制: 1s

空间限制: 64MB

题目描述

C++ 允许同一个作用域里函数名相同,用来提高名字复用。这叫函数重载。要同时满足三点:

  1. 在同一个作用域(本题全部是全局函数)。
  2. 函数名相同。
  3. 参数的类型不同,或个数不同,或顺序不同。

仅返回值类型不同不能构成重载:调用处可以不接收返回值,编译器分不清该进哪一份函数体,会出现二义。错误提示类似“无法重载仅按返回类型区分的函数”。

请实现同名函数 dispatch 的五份重载,并按传入实参走对应版本:

  • 零个参数:输出 NONE
  • 一个 int:输出 INT x
  • 一个 double:输出 DOUBLE x(按 cout 默认格式打印)
  • 参数顺序为 int, double:输出 INT_DOUBLE a b
  • 参数顺序为 double, int:输出 DOUBLE_INT a b

若询问“只靠返回值区分的两份同名函数”,输出 NO_OVERLOAD

输入格式

第一行一个整数 \(q\)(\(1 \le q \le 1000\))。

接下来 \(q\) 行,每行一种调用:

  • N:零参调用
  • I x:一个整数 \(x\)
  • D x:一个浮点数 \(x\)
  • ID a b:整数 \(a\) 与浮点数 \(b\)
  • DI a b:浮点数 \(a\) 与整数 \(b\)
  • R:询问仅按返回值区分是否构成重载

整数范围 \([-10^9, 10^9]\),浮点数绝对值不超过 \(10^6\)。

输出格式

每行一次调用的结果,行末换行。

样例

输入 #1

6
N
I 10
D 3.14
ID 10 3.14
DI 3.14 10
R

输出 #1

NONE
INT 10
DOUBLE 3.14
INT_DOUBLE 10 3.14
DOUBLE_INT 3.14 10
NO_OVERLOAD

输入 #2

2
I 0
ID -1 2.5

输出 #2

INT 0
INT_DOUBLE -1 2.5

说明

  • 零参与一参是个数不同;intdouble 是类型不同;int,doubledouble,int 是顺序不同。
  • 返回值不能当作重载条件。
  • 必须用同名重载函数完成调度,不能只在 main 里分支打印而不调用对应重载。
  • 本题函数都写在全局作用域,满足“同一作用域”这一条。

信息

ID
1096
难度
(无)
分类
(无)
标签
(无)
递交数
0
已通过
0
通过率
?
上传者