Vor kurzem sah ich den Code unten (vereinfachte Version weiter unten) in meiner Code-Basis und bekam diesen Zweifel:Kann Zeiger auf Referenz und Zeiger auf die aktuelle Variable gleich behandelt werden?
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()) ?
}
- Den Zeiger zu verweisen und Zeiger auf tatsächliche Variable kann als gleich behandelt werden?
- Der Standard sagt etwas über die Adresse der Referenz aus, die für die Adresse der Variablen verwendet werden kann.
Ich bin froh, dass Sie das geklärt haben. ;-) –
Hmmm ... Ich bin immer noch mit der Linie vom Standard verwirrt. Ich interpretierte diese Zeile vom Standard als ---- wir sollten nicht versuchen, Hinweise zu nehmen. bedeutet, Adresse der Referenz darf nicht verwendet werden. –
@aJ Nein, es bedeutet nur, dass Sie Typen vom Typ 'B & *' nicht deklarieren können. –