3 回答
TA贡献1831条经验 获得超4个赞
你这是不可能,也不符合理论的。理由是:
number1和number2的类型必须确定,当cin读入数据后存入变量时,变量的内存应该已经分配,如果类型未知那么意味编译器无法知道内存大小。即使C++11标准的auto应该也不行,因为你的写法是定义性声明,定义意味着分配内存,这时如果还未看见变量的样子,auto应该都是无法工作的。由于手头暂时不能使用VS,故未尝试,但不认为auto能工作。
一种可能的解决方案是,你按照字符串方式读入数据(string或者char[]),然后自己编写中间代码解析字符串,毕竟不同的数据类型会有不同的外在特征。
TA贡献2003条经验 获得超2个赞
来自电脑网络类芝麻团 推荐于2016-04-12
可以都是double,或者都是int
也可以一个int,一个double,甚至还可以是其它类型。
demo.get(number1,number2);时,它会自动匹配,可能完全匹配,也可能是向上匹配,如若是,int,char那么会升级成int,int
同理,int ,double会变成double ,double
TA贡献1712条经验 获得超3个赞
c++怎样编写不确定参数个数的函数
C++定义的函数是可以支持函数参数个数不确定的。VA_LIST是在C++语言中解决变参问题的一组宏,所在头文件:#include <stdarg.h>,用于获取不确定个数的参数同时使用...代替多个参数,调用时只需要根据需要传入多个参数。
VA_LIST的用法:
首先在函数里定义一具VA_LIST型的变量,这个变量是指向参数的指针;
然后用VA_START宏初始化刚定义的VA_LIST变量;
然后用VA_ARG返回可变的参数,VA_ARG的第二个参数是你要返回的参数的类型(如果函数有多个可变参数的,依次调用VA_ARG获取各个参数);
最后用VA_END宏结束可变参数的获取。
参考代码:求多个数得平均值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #include <cstdarg> #include <iostream> using namespace std; double average ( int num, ... ) { va_list arguments; // A place to store the list of arguments double sum = 0; va_start ( arguments, num ); // Initializing arguments to store all values after num for ( int x = 0; x < num; x++ ) // Loop until all numbers are added sum += va_arg ( arguments, double ); // Adds the next value in argument list to sum. va_end ( arguments ); // Cleans up the list return sum / num; // Returns some number (typecast prevents truncation) } int main() { cout<< average ( 3, 12.2, 22.3, 4.5 ) <<endl; cout<< average ( 5, 3.3, 2.2, 1.1, 5.5, 3.3 ) <<endl; } |
- 3 回答
- 0 关注
- 2557 浏览
添加回答
举报