所以说我有:
public: static void print(string message) { }
有没有办法让它在同一个函数中接受其他数据类型(例如,int,double等)?
所以我可以称它为print(7)
,它会起作用吗?
感谢大家的答案;在标题中我希望它作为相同的函数,因为我没有意识到函数可以具有彼此相同的名称(如变量)。因此,我认为你能做到的唯一方法就是通过相同的功能。由于我是C ++的新手,我更喜欢使用相同的函数名称并使用不同的参数(重载方法)进行的方法。
答案 0 :(得分:0)
这就是模板的用途,例如:
template<typename Type>
void print_something(Type something) {
std::cout << something << '\n';
}
编译器非常智能,可以从参数中推断出类型。所以你可以这样称呼它:
print_something("test");
print_something(42);
它也适用于成员函数。编译器做的是用Type
替换具体类型(如int
,char*
或std::string
)并产生过载。
答案 1 :(得分:0)
您可以使用C ++模板,Template在c ++中提供通用数据类型。 有关详细信息,请参阅此内容。
http://www.tutorialspoint.com/cplusplus/cpp_templates.htm http://www.cprogramming.com/tutorial/templates.html
答案 2 :(得分:0)
您可以使用模板轻松完成此操作。 像这样:
template <class T>
class CTest{
.
.
.
}
template <class T>
static void print::CTest<T>(T message){...}
然后在主函数中使用时指定变量类型。
答案 3 :(得分:0)
只需创建具有相同名称但具有不同参数的函数,这称为函数重载,例如:
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语言)