Geçenlerde benim kod tabanı aşağıdaki kodu (aşağıda verilen basitleştirilmiş versiyonu) gördüm ve bu şüphe var:Referans gösterebilir ve gerçek değişkenin İşaretçisi aynı şekilde ele alınabilir mi?
class B;
class A
{
public:
A():m_A("testA"){}
B& getB()
{
return m_B;
}
B* getBPtr() //== > written to explain the problem clearly
{
return &m_B;
}
private:
B m_B;
};
class B
{
public:
B(const std::string& name):m_Name(name){}
std::string getName() const
{
return m_Name;
}
private:
std::string m_Name;
};
class C
{
public:
void testFunc(B* ptr)
{
}
};
int main()
{
A a;
C c;
c.testFunc(&a.getB()); ===> is it equivalent to c.testFunc(a.getBPtr()) ?
}
- aynı şekilde tedavi edilebilir gerçek değişkene referans işaretçi ve işaretçi?
- Standart, referans adresinde, değişkenin adresi için değiştirilebilir olarak kullanılan herhangi bir şey ifade ediyor mu?
Bunu açıkladığınıza sevindim. ;-) –
Hmmm ... Hala standart hat ile karıştırıldım. Bu çizgiyi standarttan ---- olarak yorumluyordum, referans almak için işaretçiler almaya çalışmamalıyız. anlamına gelir, referans adresi kullanılmamalıdır. –
@aJ Hayır, yalnızca B & * 'türlerini bildiremediğiniz anlamına gelir. –