【发布时间】:2018-06-13 19:23:51
【问题描述】:
我已经用 C/C++ 编写代码一段时间了,我正在使用https://github.com/jarro2783/cxxopts 库。该库使用 add_options() 函数来获取它的配置,如下所示:
options.add_options() ("option1", "Description1") ("option2", "Description2");
您可以添加任意数量的选项。
令人惊讶的是,这是有效的 C/C++ 并且有效;我从来没有见过这样的东西。
他们是怎么做到的?这种语法有名字吗?
【问题讨论】:
-
看过源码了吗?
-
重载function call operator并链接。
-
这很可能是通过使用具有
operator()的类型来完成的,该类型返回相同类型的实例。 -
实际上是Named Parameter Idiom的一个变种,它出现了。
-
您可能希望使用 C 或 C++ 进行编程。在两者之间切换有时会很烦人,此外,没有 C/C++ 语言。例如,在 C 中,您没有成员函数,也不能重载函数或运算符。