[英]Use different parameter data types in same function? (C++)
所以说我有:
public: static void print(string message) { }
有没有办法让我在同一函数中接受其他数据类型(例如int,double等) ? 所以我可以像print(7)
那样称呼它,并且可以工作吗?
谢谢大家的回答; 在标题中,我希望它具有相同的功能,因为我没有意识到功能之间可以具有相同的名称(如变量)。 因此,我认为唯一的方法就是通过相同的功能。 由于我对C ++还是很陌生,所以我更喜欢只使用相同的函数名并使用不同的参数进行处理的方法(重载方法)。
这就是模板的用途,例如:
template<typename Type>
void print_something(Type something) {
std::cout << something << '\n';
}
编译器足够聪明,可以根据参数推断类型。 因此,您可以这样称呼它:
print_something("test");
print_something(42);
它也适用于成员函数。 编译器所做的是将Type
替换为具体类型(例如int
或char*
或std::string
),并产生重载。
您可以使用C ++模板,Template提供c ++中的通用数据类型。 有关更多详细信息,请参见此内容。
http://www.tutorialspoint.com/cplusplus/cpp_templates.htm http://www.cprogramming.com/tutorial/templates.html
您可以使用模板轻松地做到这一点。 像这样:
template <class T>
class CTest{
.
.
.
}
template <class T>
static void print::CTest<T>(T message){...}
然后在主要功能中使用时指定变量类型。
只需创建具有相同名称但具有不同参数的函数,这称为函数重载,例如:
void print(char *message) { printf("%s", message); }
void print(int val) { printf("%d", val); }
void print(char ch) { printf("%c", ch); }
以上所有函数均已重载,请参见调用示例:
print("Hello World!");
print(10);
print('P');
仅在C ++中可用(不适用于C)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.