首页 > 试题广场 >

指出下面每个目标是否可以使用默认参数或函数重载完成,或者这两

[问答题]
指出下面每个目标是否可以使用默认参数或函数重载完成,或者这两种方法都无法完成,并提供合适的原型。
a. mass(density, volume)返回密度为density,体积为volume的物体的质量,而mass(density)返回密度为density、体积为1.0立方米的物体的质量。这些值的类型都为double。
b. repeat(10, "I'm OK")将指定的字符串显示10次,而repeat("But you're kind of stupid")将指定的字符串显示5次。
c. average(3,6)返回两个int参数的平均值(int类型),而average(3.0,6.0)返回两个double值的平均值(double类型)。
d. mangle("I'm glad to meet you")根据是将值赋给char变量还是char*变量,分别返回字符I和指向字符串“I'm mad to gleet you”的指针。
推荐
a. 通过为第二个参数提供默认值:
double mass(double d, double v = 1.0);
也可以通过函数重载:
double mass(double d, double v);
double mass(double d);

b. 不能为重复的值使用默认值,因为必须从右到左提供默认值。可以使用重载:
void repeat(int times, const char * str);
void repeat(const char * str);
c. 可以使用函数重载:
int average(int a, int b);
double average(double x, double y);

d. 不能这样做,因为两个版本的特征标将相同。
发表于 2018-05-08 08:35:16 回复(0)