Por ejemplo, tengo una jerarquía de clases (posiblemente, con todo tipo de herencia -, privado, público, múltiples herencia virtual pública, etc.):¿Cuándo puedo comparar punteros al mismo objeto en C++?
class A {
int a;
public:
virtual ~A() {}
};
class B: public A { int b; };
class C: public virtual B { int c; };
class E: public virtual B { int e; };
class F: public C, public E { int f; };
El uso de moldes que recibo punteros a cada sub objeto de la principal objeto "grande":
F * f = new F;
E * e = f;
C * c = f;
B * b = f;
A * a = f;
Qué pares de estos punteros puedo comparar la igualdad (== operador) y por qué? ¿La comparación usará delta-logic o alguna otra técnica?
¿Cuáles son las situaciones posibles, cuando no puedo comparar punteros al mismo objeto complejo? ¿Qué tipo de objeto puede ser?
Espero que todos los punteros al mismo objeto sean siempre iguales.
* ¿Por qué? * ¿desea compararlos ?, esa es la pregunta . – Jon
Los punteros son simplemente direcciones. Si desea comparar todo, puede tratarse de objetos apuntados por los punteros. No puede comparar dos direcciones y decir si los objetos en esas ubicaciones son iguales. Bueno, err ... Puede hacerlo. ... pero eso está muy mal. –
@Als: si hago 'std :: cout << (e == b) <<" "<< e <<" "<< b << std :: endl;', imprime '1 0x1aaa020 0x1aaa030' . Entonces las direcciones son diferentes, pero los punteros son iguales. Toda la pregunta es acerca de las reglas comunes de C++ de ese tipo de comparaciones. –