![](/img/trans.png)
[英]What exactly is happening when we have unnamed parameters in these functions?
[英]What's really happening when we use a method as a parameter by reference?
假設這:
class A
{
public:
A(int x) : m_someDataMember(x) {}
~A() {}
int& someMethod(){ return m_someDataMember; }
private:
int m_someDataMember;
};
class B
{
public:
B(){}
~B(){}
void anotherMethod(int& someInt){ /*...*/}
};
現在主要
int main(/*..*/)
{
A a(5);
B b;
b.anotherMethod(a.someMethod());
}
我的問題是, anotherMethod()
到底收到了什么? 難道是內存地址本身的m_someDataMember
從對象,或副本的內存地址m_someDataMemeber
由歸國a.someMethod()
編輯:糾正錯字,缺少&
int& someMethod()
在anotherMethod()中到底收到了什么?
收到對該相同變量的 引用 。
它是對象a中m_someDataMember的內存地址本身,還是a.someMethod()返回的m_someDataMemeber副本的內存地址?
該引用可能是一個內存地址,但是C ++並未規定編譯器必須如何實現引用。 整個類也可以存在於CPU寄存器中,在這種情況下,它沒有內存地址。
但是不會創建m_someDataMember
的副本。 它引用相同的變量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.