我有一个函数,它接受一个对象的引用:
void move(Ball& ball);
我有另一个函数调用'move()',它有一个指向ball的指针:
void foo(Ball* ball){ //call move() }
foo()
应该如何将球传给move()
?
应该是这样的:
move(*ball);
要么:
move(ball);
要么:
move(&ball);
Fredrik Jans.. 11
第一个,移动(*球).
第二个,move(ball)尝试传递指针和第三个,move(&ball)尝试传递指针指针.
第一个,移动(*球).
第二个,move(ball)尝试传递指针和第三个,move(&ball)尝试传递指针指针.
移动(*球);
这就是原因.您可以将引用视为基本上指向它所传递的对象的指针.因此,您需要对象本身,而不是指针.如果你调用move(ball),你将获得指针的引用(指针),而不是对象.相反,移动(*球)取消引用指针,然后引用取得该解除引用对象的指针.