您的位置:首页 > 编程语言 > C语言/C++

关于C++中引用降低程序可读性的问题

2013-01-13 21:47 295 查看
先举个例子,实现交换两个变量值功能的函数swap,使用指针的实现如下:

bool swapPoint(int *i, int *j)
{
int temp = *i;
*i = *j;
*j = temp;
return true;
}


使用引用的实现如下:

bool swapReferences(int &i, int &j)
{
int temp = i;
i = j;
j = temp;
return true;
}

显然,使用引用的实现简单明了,且不用考虑指针的概念,很好理解,但是同时不能只考虑实现的方便,也要考虑可读性,例如在程序中使用上述函数:

int i = 10, j = 20;
swapPoint(&i, &j);


读了之后马上会注意到,使用swapPoint之后,i或者j的值可能会改变,因为传了指针,但是如果使用swapReferences,代码如下:

int i = 10, j = 20;
swapReferences(i, j);


对于C程序员来说这个函数执行完,i,j的值不可能改变,因为C没有引用;对于C++不能分辨出i, j是否会变化,在一定程度上影响了可读性,使得读代码的人不知道哪个函数会对传入的参数进行改变(在代码中第一次看到一个函数名而没有去看函数定义的时候),这样非常不直观。

针对以上问题,窃以为,可以将引用和指针的调用形式统一,由编译器做出自动匹配,即调用swapReferences时也使用:

swapReferences(&i, &j);


这样会提高程序的可读性,同时提高写程序的人和读程序的人的效率。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: