当函数将非常量引用作为参数时,它可能会创建难以阅读的代码,因为在调用站点上可能会更改哪些输入并不明显。这导致一些代码约定强制使用指针,例如
void func(int input, int* output);
int input = 1, output = 0;
func(input, &output);
代替
void func(int input, int& output);
int input = 1, output = 0;
func(input, output);
就个人而言,我讨厌使用指针,因为需要检查空值。这让我想知道是否可以使用 boost::ref (或 C++11 的 std::ref )来表示意图,如下所示:
void func(int input, int& output);
int input = 1, output = 0;
func(input, boost::ref(output));
这将用作公司编码约定。我的问题是,有什么理由说明这不是一个好主意吗?