引用和指针参数,这两中参数都允许函数修改实参指向的对象。两种类型的参数都允许有效的向函数传递大对象。所以怎么样决定把函数参数声明成引用还是指针呢?
首先引用也叫别名,引用必须被初始化为指向一个对象,一旦初始化了,它就不能再指向其他对象。然而,指针可以指向一系列不同的对象也可以什么都不指向。
因为指针可能指向一个对象或没有任何对象,所以函数在确定指针实际指向一个有效的对象之前不能安全的解引用一个指针。例如:
class X ;
void manip(X *px)
{
//在解引用指针之前确信它非0
if (px != 0)
{
//解引用
}
}
怎么样决定把函数参数声明成引用还是指针? 根据以下两个规则:
1、如果一个参数可能在函数中指向不同的对象,或者这个参数可能不指向任何的对象,则必须使用指针参数
2、引用参数的一个重要用法是,它允许我们在有效的实现重载操作符的同时,还能保证用法的直观性,即经常使用在操作符的重载上
再看下面的一个例如:
A& fun(A &one)
{
return one ;
}
int main()
{
A a ;
a.setA(11) ;
A &ra = fun(a) ; //正确:ra不是一个对象,它仅仅是对象a的另一个名字
A b = fun(a) ; //错误:b是一个对象,而fun函数返回的是一个引用,类型不同
};
从上面的例子我们可以看出:
一个引用必须赋给另一个引用。二者必须同时是引用。
本文对比了C++中引用和指针作为函数参数的特点。解释了何时选择引用,何时使用指针,通过示例展示了引用作为别名的特性。
2864

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



