c++ 是否有任何方法可以创建一个函数来接受任何数据类型的值并打印该值?

bfhwhh0e  于 2023-06-25  发布在  其他
关注(0)|答案(2)|浏览(127)

我想写一个函数,它接受两个不同数据类型的值,并使用一个函数打印这两个值。除了函数参数之外,有没有办法在不修改下面代码的情况下做到这一点?
下面是我的C++程序:

  1. #include <iostream>
  2. using namespace std;
  3. void printValues( ______________ )
  4. {
  5. cout << val1 << " " << val2 << endl;
  6. }
  7. int main()
  8. {
  9. printValues(10, 20);
  10. printValues(30, "Hello");
  11. printValues(2.5, 7.5);
  12. return 1;
  13. }
x8goxv8g

x8goxv8g1#

除了函数参数之外,有没有什么方法可以做到不修改下面的代码?
是的,在c++20中使用缩写函数模板,您可能会这样做

  1. void printValues(auto val1, auto val2)
  2. {
  3. std::cout << val1 << " " << val2 << std::endl;
  4. }

See a demo
在此之前,还需要一行代码来使其成为template function

  1. template<typename T1, typename T2>
  2. void printValues(T1 val1, T2 val2)
  3. {
  4. std::cout << val1 << " " << val2 << std::endl;
  5. }

See a demo

展开查看全部
ecfsfe2w

ecfsfe2w2#

使用C++17,您可以使用折叠表达式执行以下操作

  1. template<class... Types>
  2. void print_args(Types&&... args)
  3. {
  4. (std::cout << std::forward<decltype(args)>(args), ...);
  5. }

相关问题