## Object class


Clase base que permite usar los métodos disponibles para la clase [System.Object](./) en C#. Todas las clases no triviales usadas con el entorno traducido deben heredarla.

```cpp
class Object
```

## Métodos

| Método | Descripción |
| --- | --- |
| virtual [Equals](./equals/)(ptr) | Compara objetos usando la semántica de C# [Object.Equals](./equals/). |
| static [Equals](./equals/)(T1 const\&, T2 const\&) | Compara objetos de tipo referencia al estilo de C#. |
| static [Equals](./equals/)(T1 const\&, T2 const\&) | Compara objetos de tipo valor al estilo de C#. |
| static [Equals](./equals/)(float const\&, float const\&) | Emula la comparación de punto flotante al estilo C# donde dos NaN se consideran iguales aunque, según IEC 60559:1989, NaN no es igual a ningún valor, incluido NaN. |
| static [Equals](./equals/)(double const\&, double const\&) | Emula la comparación de punto flotante al estilo C# donde dos NaN se consideran iguales aunque, según IEC 60559:1989, NaN no es igual a ningún valor, incluido NaN. |
| virtual [FastCast](./fastcast/)(const Details::FastRttiBase\&, void **) const | Solo para uso interno. |
| [GetCounter](./getcounter/)() | Obtiene la estructura de datos del contador de referencias asociada al objeto. |
| virtual [GetHashCode](./gethashcode/)() const | Análogo al método de C# [Object.GetHashCode()](./gethashcode/). Permite el hash de objetos personalizados. |
| virtual [GetType](./gettype/)() const | Obtiene el tipo real del objeto. Análogo a la llamada de C# [System.Object.GetType()](./gettype/). |
| virtual [Is](./is/)(const TypeInfo\&) const | Comprueba si el objeto representa una instancia del tipo descrito por targetType. Análogo al operador 'is' de C#. |
| [Lock](./lock/)() | Implementa el bloqueo de la sentencia lock() de C#. Llámalo directamente o usa el objeto centinela [LockContext](../lockcontext/). |
| virtual [MemberwiseClone](./memberwiseclone/)() const | Análogo al método de C# [Object.MemberwiseClone()](./memberwiseclone/). Permite clonar tipos personalizados. |
| [Object](./object/)() | Crea el objeto. Inicializa todas las estructuras de datos internas. |
| [Object](./object/)(Object const\&) | Constructor de copia. En realidad no copia nada, solo inicializa un nuevo objeto y permite la construcción por copia de subclases. |
| [operator=](./operator=/)(Object const\&) | Operador de asignación. En realidad no copia nada, solo inicializa un nuevo objeto y permite la construcción por copia de subclases. |
| static [ReferenceEquals](./referenceequals/)(ptr const\&, ptr const\&) | Compara objetos por referencia. |
| static [ReferenceEquals](./referenceequals/)(T const\&, T const\&) | Compara objetos por referencia. |
| static [ReferenceEquals](./referenceequals/)(T const\&, std::nullptr_t) | Reference-compara objeto de tipo valor con nullptr. |
| [ReferenceEquals](./referenceequals/)(String const\&, std::nullptr_t) | Especialización de [Object::ReferenceEquals](./referenceequals/) para el caso de cadena y nullptr. |
| [ReferenceEquals](./referenceequals/)(String const\&, String const\&) | Especialización de [Object::ReferenceEquals](./referenceequals/) para el caso de cadenas. |
| [RemovedSharedRefs](./removedsharedrefs/)(int) | Disminuye el contador de referencias compartidas en el valor especificado. |
| virtual [SetTemplateWeakPtr](./settemplateweakptr/)(uint32_t) | Establece el n‑ésimo argumento de plantilla como un puntero débil (en lugar de compartido). Permite cambiar los punteros en contenedores al modo débil. |
| [SharedCount](./sharedcount/)() const | Obtiene el valor actual del contador de referencias compartidas. |
| [SharedRefAdded](./sharedrefadded/)() | Incrementa el contador de referencias compartidas. No debe llamarse directamente; en su lugar, use punteros inteligentes o ThisProtector. |
| [SharedRefRemovedSafe](./sharedrefremovedsafe/)() | Decrementa y devuelve el contador de referencias compartidas. No debe llamarse directamente; en su lugar, use punteros inteligentes o ThisProtector. |
| virtual [ToString](./tostring/)() const | Análogo del método C# [Object.ToString()](./tostring/). Permite convertir objetos personalizados a cadena. |
| static [Type](./type/)() | Implementa la construcción C# typeof([System.Object](./)). |
| [Unlock](./unlock/)() | Implementa el desbloqueo de la sentencia C# lock(). Llámelo directamente o use el objeto centinela [LockContext](../lockcontext/). |
| [WeakRefAdded](./weakrefadded/)() | Incrementa el contador de referencias débiles. No debe llamarse directamente; en su lugar, use punteros inteligentes o ThisProtector. |
| [WeakRefRemoved](./weakrefremoved/)() | Decrementa el contador de referencias débiles. No debe llamarse directamente; en su lugar, use punteros inteligentes o ThisProtector. |
| virtual [~Object](./~object/)() | Destruye el objeto. Libera todas las estructuras de datos internas. |
## Typedefs

| Typedef | Descripción |
| --- | --- |
| [ptr](./ptr/) | Alias para el tipo de puntero inteligente. |
## Observaciones


Junto con los métodos disponibles en la clase C# [System.Object](./), también permite el soporte de algunos conceptos específicos del entorno de código traducido. Esto incluye el recuento de referencias utilizado por las clases de punteros inteligentes ([System::SmartPtr](../smartptr/), [System::WeakPtr](../weakptr/), [System::DynamicWeakPtr](../dynamicweakptr/)) y otros servicios relacionados con la gestión de memoria, depuración, etc.

Cada [Object](./) tiene dos contadores de referencias: contador de referencias compartidas y contador de referencias débiles. El contador de referencias débiles siempre se almacena en una estructura de datos separada en lugar de en el propio [Object](./), lo que permite que los punteros débiles sobrevivan al objeto referenciado. El contador de referencias inteligentes se almacena ya sea en el propio objeto o en la misma estructura separada, dependiendo del estado de la macro ENABLE_EXTERNAL_REFCOUNT. Por defecto, está habilitado en compilaciones de depuración y deshabilitado en compilaciones de lanzamiento. Si el contador de punteros inteligentes se almacena en el propio objeto, la estructura de datos separada se crea solo si existen punteros débiles al objeto. De lo contrario, se crea junto con el propio objeto.

Todos los punteros inteligentes utilizan estos dos contadores de referencias y contribuyen al mismo y único grupo de propiedad.

Si una subclase de [Object](./) se crea en la pila, no se pueden crear punteros inteligentes hacia ella; de lo contrario, se produce un problema de eliminación de la pila.

Este tipo puede asignarse ya sea en la pila como tipo valor o en el montón mediante la función [System::MakeObject()](../makeobject/). Una vez que el objeto está asignado, nunca mezcle estos dos casos de uso: tener punteros [SmartPtr](../smartptr/) a objetos asignados en la pila está estrictamente prohibido.
## Ver también

* Namespace [System](../)
* Library [Aspose.Page for C++](../../)
