C++ 在C+;中的类成员函数中传递当前对象的引用+;
就像C++ 在C+;中的类成员函数中传递当前对象的引用+;,c++,c++11,pointers,reference,pass-by-reference,C++,C++11,Pointers,Reference,Pass By Reference,就像这个指针用于将指针传递给当前对象一样,我如何传递对当前对象的引用 class UseMe { public: UseMe_funcReference(base&); UseMe_FuncPointer(base *) } class base{ .......... } class Abc:public base { public: friend UseMe; UseMe innerObj; Func1() {
这个
指针用于将指针传递给当前对象一样,我如何传递对当前对象的引用
class UseMe
{
public:
UseMe_funcReference(base&);
UseMe_FuncPointer(base *)
}
class base{
..........
}
class Abc:public base
{
public:
friend UseMe;
UseMe innerObj;
Func1()
{
(this->innerObj).UseMe_funcPointer(this); // This passes pointer to current object
(this->innerObj).UseMe_funcReference(HOW_TO_PASS_REFERENCE_TO_CURRENT_OBJECT);
}
}
您不需要在调用站点使用与常规传递值完全相同的语法来表示“按引用传递” 在实际函数中,使用
&
表示通过引用传递参数。例如,考虑函数<代码> FoO < /C> >,以<代码>栏<代码>为参考:
void foo(bar& reference);
如果
此
是条形图*
(或相关)类型,则可以在调用站点使用foo(*this)
您不需要在调用站点使用与常规传递值完全相同的语法来表示传递引用
在实际函数中,使用&
表示通过引用传递参数。例如,考虑函数<代码> FoO < /C> >,以<代码>栏<代码>为参考:
void foo(bar& reference);
如果
此
是条形图*
(或相关)类型,则可以在调用站点使用foo(*this)
当从赋值操作符返回对self的引用时,您只需使用*此
。当从赋值操作符返回对self的引用时,您只需使用*此
。此
是指向当前对象的指针
*这是当前对象的名称
与这里其他一些人所说的相反,它不是一个引用(取消对T*
的引用会给您一个左值T
),但是您可以像在其他地方一样将引用绑定到它
tl;dr:解除对它的引用,就像其他任何指针一样此
是指向当前对象的指针
*这是当前对象的名称
与这里其他一些人所说的相反,它不是一个引用(取消对T*
的引用会给您一个左值T
),但是您可以像在其他地方一样将引用绑定到它
tl;dr:取消对它的引用,就像其他任何指针一样*此
是对当前对象的引用。。。我不确定我是否理解这个问题…@LightnessRacesinOrbit-是的,这是一个具有特定值类别的表达式,可以绑定到引用。。。这并不能改变事实,我不确定这是否能回答OP的问题。遗憾的是,你在评论中写了一个建议的解决方案,它不能因为厚颜无耻的技术错误和错误信息而被否决,@Story!为什么你认为它不能回答OP的问题?@LightnessRacesinOrbit-为什么给我怀疑的好处?我肯定是在散布虚假信息来迷惑OP(以及未来的读者,让我们不要忘记),而不是用口语来理解他们的意思。很高兴你能把事情弄清楚。@LightnessRacesinOrbit-是的,“句号”肯定是欺骗意图的证明。(舒格)。我将退出。*此
是对当前对象的引用。。。我不确定我是否理解这个问题…@LightnessRacesinOrbit-是的,这是一个具有特定值类别的表达式,可以绑定到引用。。。这并不能改变事实,我不确定这是否能回答OP的问题。遗憾的是,你在评论中写了一个建议的解决方案,它不能因为厚颜无耻的技术错误和错误信息而被否决,@Story!为什么你认为它不能回答OP的问题?@LightnessRacesinOrbit-为什么给我怀疑的好处?我肯定是在散布虚假信息来迷惑OP(以及未来的读者,让我们不要忘记),而不是用口语来理解他们的意思。很高兴你能把事情弄清楚。@LightnessRacesinOrbit-是的,“句号”肯定是欺骗意图的证明。(舒格)。我要走了,投票表决吧。感谢您指出,我们从来没有“参考通过”,而是“参考采纳”进行表决。感谢您指出,我们从来没有“参考传递”,而是“参考采纳”