【问题标题】:C++ how to make a function that has optional parameters [duplicate]C ++如何制作具有可选参数的函数[重复]
【发布时间】:2021-11-23 02:04:20
【问题描述】:

我想创建一个具有像这里这样的参数的函数 void example(int x, int y, int z); 但我不必像这样将z 放在那里example(34, 21); 在C++ 中可能吗?

【问题讨论】:

  • 当这个z 不存在时,你希望函数中引用z 的所有代码做什么?
  • 写两个同名函数或者给z提供一个默认值
  • 他们被称为default arguments
  • TLDR:void example(int x, int y, int z=0){}

标签: c++ function parameters


【解决方案1】:

使用未定义数量的参数的方法是使用省略号。为了进一步阅读,我建议仔细阅读 https://en.cppreference.com/w/cpp/language/variadic_arguments 要实现它,只需 google 如何使用 c++ 省略号,就是这样!

【讨论】:

  • 这是被认为有害的 C 特性。
  • @MarekR 无论如何它被用于许多 STD C/C++ 函数
  • 仅在 C API 中,例如 printf。在真正的 C++ API 中你没有它。 C++20 引入了std::format,它使用可变参数模板来确保类型安全和快速。
  • 无论如何,如果您真的认为这是一个好主意,请尝试将其与this question这样的简单案例一起使用。你会看到它引入了多少问题。
【解决方案2】:

你基本上有两个选择

  1. 创建一个采用 2 个参数的重载函数。所以你会有
void example(int x, int y, int z)

void example(int x, int y)
  1. 为 z 分配默认值
void example(int x, int y, int z = 0)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-20
    • 2012-03-21
    • 1970-01-01
    • 2013-06-24
    • 2016-03-27
    • 2011-01-27
    • 2011-12-24
    • 1970-01-01
    相关资源
    最近更新 更多