| Version: 3.3.1

Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
wxObject Class Reference
Class List by Category » Runtime Type Information (RTTI)

`#include <wx/object.h>`

Inheritance diagram for wxObject:
[legend]

## Detailed Description

This is the root class of many of the wxWidgets classes.

It declares a virtual destructor which ensures that destructors get called for all derived class objects where necessary.

wxObject is the hub of a dynamic object creation scheme, enabling a program to create instances of a class only knowing its string class name, and to query the class hierarchy.

The class contains optional debugging versions of new and delete, which can help trace memory allocation and deallocation problems.

wxObject can be used to implement reference counted objects, such as wxPen, wxBitmap and others (see this list). See wxRefCounter and Reference Counting for more info about reference counting.

##

Library: wxBase
Category: Runtime Type Information (RTTI)

See also
  wxClassInfo, Debugging, Reference Counting, wxObjectDataRef, wxObjectDataPtr<T>

## Public Member Functions
| wxObject ()
| Default ctor; initializes to nullptr the internal reference data. More...
| wxObject (const wxObject &other)
| Copy ctor. More...
virtual | ~wxObject ()
| Destructor. More...
virtual wxClassInfo * | GetClassInfo () const
| This virtual function is redefined for every class that requires run-time type information, when using the wxDECLARE_CLASS macro (or similar). More...
wxObjectRefData * | GetRefData () const
| Returns the wxObject::m_refData pointer, i.e. the data referenced by this object. More...
bool | IsKindOf (const wxClassInfo *info) const
| Determines whether this class is a subclass of (or the same class as) the given class. More...
bool | IsSameAs (const wxObject &obj) const
| Returns true if this object has the same data pointer as obj. More...
void | Ref (const wxObject &clone)
| Makes this object refer to the data in clone. More...
void | SetRefData (wxObjectRefData *data)
| Sets the wxObject::m_refData pointer. More...
void | UnRef ()
| Decrements the reference count in the associated data, and if it is zero, deletes the data. More...
void | UnShare ()
| This is the same of AllocExclusive() but this method is public. More...
void | operator delete (void *buf)
| The delete operator is defined for debugging versions of the library only, when the identifier `__WXDEBUG__` is defined. More...
void * | operator new (size_t size, const wxString &filename=nullptr, int lineNum=0)
| The new operator is defined for debugging versions of the library only, when the identifier `__WXDEBUG__` is defined. More...

## Protected Member Functions
void | AllocExclusive ()
| Ensure that this object's data is not shared with any other object. More...
virtual wxObjectRefData * | CreateRefData () const
| Creates a new instance of the wxObjectRefData-derived class specific to this object and returns it. More...
virtual wxObjectRefData * | CloneRefData (const wxObjectRefData *data) const
| Creates a new instance of the wxObjectRefData-derived class specific to this object and initializes it copying data. More...

## Protected Attributes
wxObjectRefData * | m_refData
| Pointer to an object which is the object's reference-counted data. More...

## Constructor & Destructor Documentation

## ◆ wxObject() [1/2]

wxObject::wxObject | ( |  | ) |

Default ctor; initializes to nullptr the internal reference data.

## ◆ wxObject() [2/2]

wxObject::wxObject | ( | const wxObject & | other | ) |

Copy ctor.

Sets the internal wxObject::m_refData pointer to point to the same instance of the wxObjectRefData-derived class pointed by `other` and increments the refcount of wxObject::m_refData.

## ◆ ~wxObject()

virtual wxObject::~wxObject | ( |  | ) |
| virtual

Destructor.

Performs dereferencing, for those objects that use reference counting.

## Member Function Documentation

## ◆ AllocExclusive()

void wxObject::AllocExclusive | ( |  | ) |
| protected

Ensure that this object's data is not shared with any other object.

If we have no data, it is created using CreateRefData(); if we have shared data (i.e. data with a reference count greater than 1), it is copied using CloneRefData(); otherwise nothing is done (the data is already present and is not shared by other object instances).

If you use this function you should make sure that you override the CreateRefData() and CloneRefData() functions in your class otherwise an assertion will fail at runtime.

## ◆ CloneRefData()

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

Creates a new instance of the wxObjectRefData-derived class specific to this object and initializes it copying data.

This is usually implemented as a one-line call:

wxObjectRefData *MyObject::CloneRefData(const wxObjectRefData *data) const
{
// rely on the MyObjectRefData copy ctor:
return new MyObjectRefData(*(MyObjectRefData *)data);
}
wxObjectRefData
This class is just a typedef to wxRefCounter and is used by wxObject.

## ◆ CreateRefData()

virtual wxObjectRefData* wxObject::CreateRefData | ( |  | ) | const
| protected virtual

Creates a new instance of the wxObjectRefData-derived class specific to this object and returns it.

This is usually implemented as a one-line call:

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

## ◆ GetClassInfo()

virtual wxClassInfo* wxObject::GetClassInfo | ( |  | ) | const
| virtual

This virtual function is redefined for every class that requires run-time type information, when using the wxDECLARE_CLASS macro (or similar).

## ◆ GetRefData()

wxObjectRefData* wxObject::GetRefData | ( |  | ) | const

Returns the wxObject::m_refData pointer, i.e. the data referenced by this object.

See also
  Ref(), UnRef(), wxObject::m_refData, SetRefData(), wxObjectRefData

## ◆ IsKindOf()

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

Determines whether this class is a subclass of (or the same class as) the given class.

Example:

bool tmp = obj->IsKindOf(wxCLASSINFO(wxFrame));
wxFrame
A frame is a window whose size and position can (usually) be changed by the user.
Definition: frame.h:166
wxCLASSINFO
#define wxCLASSINFO(className)
Returns a pointer to the wxClassInfo object associated with this class.
Definition: object.h:682

Parameters

  info | A pointer to a class information object, which may be obtained by using the wxCLASSINFO macro.

Returns
  true if the class represented by info is the same class as this one or is derived from it.

## ◆ IsSameAs()

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

Returns true if this object has the same data pointer as obj.

Notice that true is returned if the data pointers are nullptr in both objects.

This function only does a shallow comparison, i.e. it doesn't compare the objects pointed to by the data pointers of these objects.

See also
  Reference Counting

## ◆ operator delete()

void wxObject::operator delete | ( | void * | buf | ) |

The delete operator is defined for debugging versions of the library only, when the identifier `__WXDEBUG__` is defined.

It takes over memory deallocation, allowing wxDebugContext operations.

## ◆ operator new()

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

The new operator is defined for debugging versions of the library only, when the identifier `__WXDEBUG__` is defined.

It takes over memory allocation, allowing wxDebugContext operations.

## ◆ Ref()

void wxObject::Ref | ( | const wxObject & | clone | ) |

Makes this object refer to the data in clone.

Parameters

  clone | The object to 'clone'.

Remarks
  First this function calls UnRef() on itself to decrement (and perhaps free) the data it is currently referring to. It then sets its own wxObject::m_refData to point to that of clone, and increments the reference count inside the data.

See also
  UnRef(), SetRefData(), GetRefData(), wxObjectRefData

## ◆ SetRefData()

void wxObject::SetRefData | ( | wxObjectRefData * | data | ) |

Sets the wxObject::m_refData pointer.

See also
  Ref(), UnRef(), GetRefData(), wxObjectRefData

## ◆ UnRef()

void wxObject::UnRef | ( |  | ) |

Decrements the reference count in the associated data, and if it is zero, deletes the data.

The wxObject::m_refData member is set to nullptr.

See also
  Ref(), SetRefData(), GetRefData(), wxObjectRefData

## ◆ UnShare()

void wxObject::UnShare | ( |  | ) |

This is the same of AllocExclusive() but this method is public.

## Member Data Documentation

## ◆ m_refData

wxObjectRefData* wxObject::m_refData
| protected

Pointer to an object which is the object's reference-counted data.

See also
  Ref(), UnRef(), SetRefData(), GetRefData(), wxObjectRefData