Nic*_*ner 3 c++ syntax pointers
我有一个方法:
odp(foo& bar);
Run Code Online (Sandbox Code Playgroud)
我试着称之为:
foo baz;
odp(&baz);
Run Code Online (Sandbox Code Playgroud)
我收到编译器错误:
error C2664: "odp" cannot convert parameter 1 from 'foo *' to 'foo &'
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?我不是在提及参考baz
吗?
更新:也许我对指针和引用之间的关系有误解.我认为它们是相同的,除了引用不能为空.这是不正确的?
将一元运算&
符应用于对象时,将获得指向该对象的指针,而不是引用.在这种情况下你需要一个参考.为了初始化引用参数,您根本不需要应用任何运算符:lvalue对象可以立即用于初始化相应类型的引用.
"指针"和"引用"概念之间的非正式同义(如"通过指针传递"和"通过引用传递")是C语言特有的.但在C++中,它们意味着两个完全不同的东西.