在c ++中object*x和object&x之间的区别是什么

kam*_*lot 2 c++ pointers reference function pass-by-reference

可能重复:
C++中指针变量和引用变量之间的差异

假设我正在尝试将对象x的引用传递给c ++函数...

有什么区别

pass(Object * x){


}
Run Code Online (Sandbox Code Playgroud)

pass(Object& x){

}
Run Code Online (Sandbox Code Playgroud)

当使用不同的方法声明指针/引用时,您将如何访问实际对象本身...

例如,如果我有Object*x,我将如何实际访问x引用的实际对象

与Object&x相同

Eti*_*tel 11

第一个是指针传递.第二个是参考传递.

至于用法,必须先将指针"解除引用"才能使用它.这是由*->运营商完成的:

void do_something(Object * x)
{
    Object & ref = *x; // * returns a reference
    ref.method();
    x->method(); // same as (*x).method()
}
Run Code Online (Sandbox Code Playgroud)

参考文献没有这样的限制:

void do_something(Object & x)
{
    x.method();
}
Run Code Online (Sandbox Code Playgroud)

但是,引用只能在整个生命周期内指向一个对象,而指针可以改变目标,并且(如下面提到的John)指向"nothing"(即NULL,0或者,在C++ 0x中nullptr).NULL 在C++中没有引用这样的东西.

由于引用更容易使用且不易出错,所以除非你知道自己在做什么,否则更喜欢它们(指针是一个相当棘手的主题).