Le classi CObject e CRuntimeClass incapsulano diversi servizi oggetto, compreso l'accesso a informazioni sulla classe in fase di esecuzione, la serializzazione e la creazione di un oggetto dinamico. Tutte le classi derivate da CObject ereditano questa funzionalità.
Accesso alle informazioni sulla classe Runtime consente di determinare le informazioni sulla classe di un oggetto in fase di esecuzione. La capacità di determinare la classe di un oggetto in fase di esecuzione è utile quando hai bisogno di ulteriore controllo del tipo gli argomenti della funzione e quando è necessario scrivere codice specifico basato sulla classe di un oggetto. Informazioni sulla classe in fase di esecuzione non è supportati direttamente dal linguaggio C++.
La serializzazione è il processo di scrittura o lettura di contenuto di un oggetto a o da un file. È possibile utilizzare la serializzazione per archiviare il contenuto di un oggetto anche dopo la chiusura dell'applicazione. L'oggetto può essere letti dal file quando l'applicazione viene riavviata. Tali oggetti dati sono detto di essere "persistenti".
Creazione di un oggetto dinamico consente di creare un oggetto di una classe specificata in fase di esecuzione. Ad esempio, oggetti fotogramma, visualizzazione e documento devono supportare creazione dinamica perché il quadro deve crearli in modo dinamico.
Nella tabella seguente sono elencate le macro MFC che supportano informazioni sulla classe in fase di esecuzione, la serializzazione e la creazione dinamica.
Per ulteriori informazioni su questi servizi oggetto della fase di esecuzione e la serializzazione, vedere l'articolo classe CObject: informazioni sulla classe l'accesso A Run-Time nel manuale del programmatore di Visual C++.
Macro servizi di runtime Object Model
| DECLARE_DYNAMIC | Consente l'accesso alle informazioni di classe in fase di esecuzione (che deve essere utilizzato nella dichiarazione di classe). |
| DECLARE_DYNCREATE | Consente la creazione dinamica e l'accesso alle informazioni di classe in fase di esecuzione (che deve essere utilizzato nella dichiarazione di classe). |
| DECLARE_SERIAL | Consente la serializzazione e accedere alle informazioni di classe in fase di esecuzione (che deve essere utilizzato nella dichiarazione di classe). |
| IMPLEMENT_DYNAMIC | Consente l'accesso alle informazioni di classe in fase di esecuzione (che deve essere utilizzato nell'implementazione della classe). |
| IMPLEMENT_DYNCREATE | Consente la creazione dinamica e l'accesso alle informazioni di runtime (deve essere utilizzata l'implementazione della classe). |
| IMPLEMENT_SERIAL | Permessi di serializzazione e accedere alle informazioni di classe in fase di esecuzione (che deve essere utilizzato nell'implementazione della classe). |
| RUNTIME_CLASS | Restituisce la struttura di CRuntimeClass che corrisponde alla classe denominata. |
OLE spesso richiede la creazione dinamica di oggetti in fase di esecuzione. Ad esempio, un'applicazione server OLE deve essere in grado di creare oggetti OLE dinamicamente in risposta a una richiesta da un client. Analogamente, un server di automazione deve essere in grado di creare elementi in risposta alle richieste dei client di automazione.
La libreria fornisce due macro specifiche a OLE.
Creazione dinamica di oggetti OLE
| DECLARE_OLECREATE | Consente agli oggetti di essere creato tramite l'automazione OLE. |
| IMPLEMENT_OLECREATE | Consente agli oggetti di essere creati dal sistema OLE. |