C++ 函数是否有自动检测其参数数据类型的方法?(请不要建议函数重载)
我想做的是:C++ 函数是否有自动检测其参数数据类型的方法?(请不要建议函数重载),c++,function,type-conversion,overloading,C++,Function,Type Conversion,Overloading,我想做的是: (some data type say x) function_name((same data type x mentioned earlier) variable_name) { /* Function body */ } int main() { (data type x mentioned above) var; function_name(var); ..... } 比如我 int function_name(int x) int main(
(some data type say x) function_name((same data type x mentioned earlier) variable_name)
{
/* Function body */
}
int main()
{
(data type x mentioned above) var;
function_name(var);
.....
}
比如我
int function_name(int x)
int main()
{
int y;
function_name(y);
....}
在main()中,我通过上述函数传递一个int变量
现在我想要另一个和上面的函数完全相同的函数体,但是参数的数据类型和返回类型不同,比如
unsigned long long FUNCTION_NAME_SAME_DEFINITION_AS_function_name(unsigned long long x)
有没有一种方法可以在不使用函数重载的情况下合并上述两个函数?是否意味着函数检测通过它传递的变量的数据类型?如果我传递类型1的参数,它将返回数据类型1的值,如果我传递类型2的参数,它将返回数据类型2的值。你的意思是像模板一样
template <typename T>
T function_name(T variable_name)
{
/* Function body */
}
模板
T函数名称(T变量名称)
{
/*功能体*/
}
读一本书或什么的。你可以用模板来完成
template <typename T>
T function_name(T var) {
// code
}
int main() {
int foo;
char bar;
function_name(foo); // returns int
function_name(bar); // returns char
}
模板
T函数名称(T变量){
//代码
}
int main(){
int foo;
炭条;
函数_name(foo);//返回int
函数_name(bar);//返回字符
}
编译器将尝试使用可用的模板定义进行各种类型组合,以输出有效的函数。如果成功,它将生成该类型的完整函数定义
回复:UserCPP:可能吗?模板T function_name{….},Mean函数不接受任何数据类型,我在主函数中写“variable=function_name()
这不可能直接实现。函数模板只能从参数推断类型,不能从返回值推断类型。你有一些选择。您可以通过引用而不是返回值来修改:
template <typename T>
void function_name(T& var) {
// code
}
int main() {
int foo;
char bar;
function_name(foo); // modifies foo as an int
function_name(bar); // modifies bar as a char
}
模板
无效函数名称(T&var){
//代码
}
int main(){
int foo;
炭条;
函数_name(foo);//将foo修改为int
函数_name(bar);//将bar修改为字符
}
您还可以显式声明类型:
template <typename T>
T function_name() {
// code
}
int main() {
int foo;
char bar;
foo = function_name<int>(); // returns int
bar = function_name<char>(); // returns char
}
模板
T函数_name(){
//代码
}
int main(){
int foo;
炭条;
foo=函数_name();//返回int
bar=函数_name();//返回字符
}
推荐阅读:
(特别是,)不能接受int,unsigned long long,…像这里这样的数据类型吗?@UserCPP是的,可以;答案中最重要的部分是最后一句话。@UserCPP和no-每种类型都有一个不同的函数是的,看起来我只是在寻找这个。可能吗?模板T function_name{…},Mean函数不接受任何数据类型,在main函数中我写了“variable=function_name()”@UserCPP我用答案编辑了我的帖子,简短的答案是“否”,但有选项。