当我不能通过引用传递参数时,你能给我一个例子,我需要使用指针。我找到了一个例子,但我不确定。
假设您有一个从基类D
派生的类B
。如果你想这样做,你需要指针:
void function(B* b){...}
int main{
D* d;
function(d);
}
答案 0 :(得分:6)
如果通过传递空指针允许“无参数”的概念,那么你不能使用引用并且必须使用指针的唯一时间。
但是,当您实际存储指向传递的内容的指针时,您可能希望将指针用作参数。大多数C ++开发人员会注意到您没有使用引用,并特别注意您的文档所说的内容。
答案 1 :(得分:6)
如果存在使用指针参数的编码指南(如Google),那就是你所做的。
否则,只在
时用指针形式参数声明自己的函数nullpointer是一个有效的&有意义的实际论证,或
实际参数最自然是指针,或
你要将指针存放在某处。
可能更多的情况,但我认为你得到了漂移:当你有一个选择(没有编码指南另有说法)时,更喜欢参考。
干杯&第h。,
答案 2 :(得分:1)
另一种情况:如果您传递的内容是varargs之前的最后一个参数:
void fn1(A &a, ...); // Uh oh
void fn2(A *a, ...); // Good
我不知道这是否是标准所要求的,或者只是我使用的C ++编译器实现中的一个错误。
答案 3 :(得分:1)
通常,您可以将指针用于以下两种方法之一:
如果您的预期用例不需要这两个属性中的任何一个,请使用引用。否则,使用指针。
答案 4 :(得分:0)
如果你想允许缺少一个对象,你需要使用指针:
// This allows DoSomething to receive pointers to NULL, which cannot
// be done with references
void DoSomething(Something *pSomething)
{
if (pSomething)
{
...
}
}
int main()
{
Something *pSomething=NULL;
DoSomething(pSomething);
}
答案 5 :(得分:0)
http://www.daniweb.com/forums/thread216353.html
单链表示例是指针,指针指针用作函数参数。
答案 6 :(得分:-1)
唯一的原因是你需要传递null。你想把这个函数称为'我没有其中一个'
答案 7 :(得分:-2)
我认为如果你想传递一个函数,你必须通过指针传递它。我看不出你如何通过引用传递函数。
例如,请执行以下功能:
#include <iostream>
#include "math.h"
void myfun (double value, size_t nofloops, double (*function)(double))
{
std::cout << value << std::endl;
for (size_t i=0;i<nofloops;++i)
{
value = function(value);
std::cout << value << std::endl;
}
std::cout << "------------------" << std::endl;
}
void main()
{
myfun(100,10,sin);
myfun(100,10,cos);
myfun(100,10,sqrt);
}
这个小实用程序中的函数多次执行给定函数,在下一次迭代中将结果作为输入。我看不出你如何通过引用传递函数。