object.h

Clase wxObject

Jerarquía:

Jerarquía de la clase wxObject
Jerarquía de la clase wxObject

Esta es la clase raíz de muchas de las clases wxWidgets.

Declara un destructor virtual que asegura que los destructores sean llamados para todos los objetos de las clases derivadas cuando sea necesario.

wxObject es el centro de un esquema dinámico de creación de objetos, permitiendo a un programa crear instancias de una clase sólo conociendo su nombre de clase de cadena, y para consultar la jerarquía de clases.

La clase contiene versiones opcionales de depuración de new y delete, que pueden ayudar a rastrear problemas de asignación y desasignación de memoria.

wxObject se puede utilizar para implementar objetos contados por referencia, como wxPen, wxBitmap y otros (ver esta lista). Ver wxRefCounter para más información sobre el conteo de referencias.

Funciones miembro públicas

wxObject()

wxObject::wxObject()

Constructor por defecto; inicializa a NULL los datos de referencia internos.

wxObject()

wxObject::wxObject(const wxObject & other)

Constructor copia.

Establece el puntero interno wxObject::m_refData para que apunte a la misma instancia de la clase derivada wxObjectRefData apuntada por other e incrementa el refcount de wxObject::m_refData.

~wxObject()

virtual wxObject::~wxObject()

Destructor.

Realiza la desreferenciación, para aquellos objetos que utilizan el conteo de referencias.

AllocExclusive()

void wxObject::AllocExclusive()

Asegura que los datos de este objeto no están compartidos con ningún otro objeto.

Si no tenemos datos, se crean mediante CreateRefData(); si tenemos datos compartidos (es decir, datos con un recuento de referencias superior a 1), se copian mediante CloneRefData(); en caso contrario, no se hace nada (los datos ya están presentes y no son compartidos por otras instancias del objeto).

Si utiliza esta función debe asegurarse de anular las funciones CreateRefData() y CloneRefData() en su clase, de lo contrario fallará una aserción en tiempo de ejecución.

CloneRefData()

virtual wxObjectRefData* wxObject::CloneRefData(const wxObjectRefData * data)const

Crea una nueva instancia de la clase wxObjectRefData derivada específica de este objeto y la inicializa copiando datos.

Esto suele implementarse como una llamada de una sola línea:

wxObjectRefData *MyObject::CloneRefData(const wxObjectRefData *data) const
{
    // rely on the MyObjectRefData copy ctor:
    return new MyObjectRefData(*(MyObjectRefData *)data);
}
CreateRefData()

virtual wxObjectRefData* wxObject::CreateRefData() const

Crea una nueva instancia de la clase wxObjectRefData derivada específica de este objeto y la devuelve.

Esto suele implementarse como una llamada de una sola línea:

wxObjectRefData *MyObject::CreateRefData() const
{
    return new MyObjectRefData;
}
GetClassInfo()

virtual wxClassInfo* wxObject::GetClassInfo() const

Esta función virtual se redefine para cada clase que requiera información de tipo en tiempo de ejecución, cuando se utiliza la macro wxDECLARE_CLASS (o similar)

GetRefData()

wxObjectRefData* wxObject::GetRefData() const

Devuelve el puntero wxObject::m_refData, es decir, los datos referenciados por este objeto.

Ver también

Ref(), UnRef(), wxObject::m_refData, SetRefData(), wxObjectRefData.

IsKindOf()

bool wxObject::IsKindOf(const wxClassInfo * info) const

Determina si esta clase es una subclase de (o la misma clase que) la clase dada.

Ejemplo:

bool tmp = obj->IsKindOf(wxCLASSINFO(wxFrame));
Parámetros
info
Un puntero a un objeto de información de clase, que puede obtenerse utilizando la macro wxCLASSINFO.
Valor de retorno

true si la clase representada por info es la misma clase que ésta o deriva de ella.

IsSameAs()

bool wxObject::IsSameAs(const wxObject & obj) const

Devuelve true si este objeto tiene el mismo puntero de datos que obj.

Observe que se devuelve true si los punteros de datos son NULL en ambos objetos.

Esta función sólo realiza una comparación superficial, es decir, no compara los objetos a los que apuntan los punteros de datos de estos objetos.

operator delete()

void wxObject::operator delete (void * buf)

El operador delete está definido solo para las versiones de depuración de la librería, cuando el identificador __WXDEBUG__ está definido.

Se encarga de la liberación de memoria, permitiendo operaciones wxDebugContext.

operator new()

void* wxObject::operator new( size_t size, const wxString & filename = NULL, int lineNum = 0 )

El operador new está definido sólo para las versiones de depuración de la librería, cuando el identificador __WXDEBUG__ está definido.

Se hace cargo de la asignación de memoria, permitiendo operaciones wxDebugContext.

Ref()

void wxObject::Ref(const wxObject & clone)

Hace que este objeto haga referencia a los datos en clone.

Parámetros
clone
El objeto a 'clonar'.
Observaciones

Primero esta función llama a UnRef() sobre sí misma para decrementar (y quizás liberar) los datos a los que se está refiriendo actualmente. A continuación, establece su propio wxObject::m_refData para que apunte al de clone, e incrementa el recuento de referencias dentro de los datos.

Ver también

UnRef(), SetRefData(), GetRefData(), wxObjectRefData.

SetRefData()

void wxObject::SetRefData(wxObjectRefData* data)

Establece el puntero wxObject::m_refData.

Ver también

Ref(), UnRef(), GetRefData(), wxObjectRefData.

UnRef()

void wxObject::UnRef()

Disminuye el recuento de referencias en los datos asociados, y si es cero, borra los datos.

El miembro wxObject::m_refData se establece a NULL.

Ver también

Ref(), SetRefData(), GetRefData(), wxObjectRefData.

UnShare()

void wxObject::UnShare()

Es lo mismo que AllocExclusive() pero este método es público.

Atributos protegidos

m_refData

wxObjectRefData* wxObject::m_refData

Puntero a un objeto que son los datos contados por referencia del objeto.

Ver también

Ref(), UnRef(), SetRefData(), GetRefData(), wxObjectRefData.