C++ 中的命名参数、方法链和构建器模式
1. C++ 中的命名参数
在 C++ 里,我们能够实现真正的命名参数。当调用函数时,可以按任意顺序通过名称传递参数,而且无需显式提及那些想保留默认值的参数,这就是 C++ 命名参数惯用法。
例如:
SetFestival().
SetGuard(3));
使用命名参数调用函数比使用位置参数调用更冗长,因为每个参数都必须显式写出名称。不过,若有一长串默认参数无需更改,使用命名参数就会更具优势。
接下来探讨命名参数惯用法的性能。命名参数调用会涉及更多函数调用,但这些函数调用很简单。若函数在头文件中定义,且整个实现对编译器可见,编译器就有可能内联所有 Set() 调用并消除不必要的临时变量。
为测量单个函数调用的性能,可使用微基准测试工具,这里选用 Google 微基准测试库。通常,基准测试代码写在一个文件中,但如果希望调用的函数是外部的且不被内联,就需要另一个源文件。而 Set() 方法应在头文件中定义以实现内联。
编译命令如下:
$CXX named_args.C named_args_extra.C -g -O4 -I. \
-Wall -Wextra -Werror -pedantic --std=c++14 \
-I$GBENCH_DIR/include $GBENCH_DIR/lib/libbenchmark.a \
-lpthread -l
超级会员免费看
订阅专栏 解锁全文
4572

被折叠的 条评论
为什么被折叠?



