Hace poco vi el código de abajo (versión simplificada dada a continuación) en mi base de código y tiene esta duda:¿Se puede tratar el puntero a la referencia y el puntero a la variable real de la misma manera?
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()) ?
}
- El puntero para referenciar y el puntero a la variable real puede ser tratado como iguales?
- ¿El estándar dice algo en la dirección de referencia para ser intercambiable utilizado para la dirección de la variable.
Me alegra que haya aclarado eso. ;-) –
Hmmm ... Todavía estoy confundido con la línea del estándar. Estaba interpretando esa línea del estándar como ---- no deberíamos tratar de tomar los punteros como referencia. significa que la dirección de la referencia no debe ser utilizada. –
@aJ No, solo significa que no puede declarar tipos de tipo 'B & *'. –