Delegazione e MetaClass in C ++

6

Abbiamo un corso OOP presso la nostra università, discutendo i concetti che ho incontrato su MetaClass e Delegazione. Per quanto ne so, questi non esistono in C ++.

Qualcuno potrebbe dare un esempio con il quale posso capire meglio come simularli, invece.

    
posta nikhil 27.10.2011 - 19:06
fonte

1 risposta

7

La delega può essere ottenuta in C ++ usando i funtori (resi ancora più semplici da dichiarare in C ++ 11 con lambdas). Qualsiasi tipo può definire una funzione membro dell'operatore di chiamata, quindi potresti dire che C ++ ha Delega, solo non in una sintassi facile, ma corretto con lambdas.

Per essere più precisi (vedi commenti), lambda non agisce come delegato, funtori - che sono semplicemente oggetti che puoi chiamare come funzione e quindi muoverti finché non hai bisogno di chiamarli - agire come delegati. Le espressioni lambda sono solo zucchero sintattico che consente di definire "in place" un functor direttamente nel codice che lo utilizzerà. Guarda la pagina di wikipedia per lambda per un'introduzione, è la stessa di C # o Python ma una un po 'più potente perché puoi inserire più di una fodera.

MetaClass è più difficile ma non impossibile: cerca librerie di riflessioni per caratteristiche simili. Tuttavia, è molto raro che tali funzionalità siano davvero utili in C ++, come puoi leggi qui i motivi . La maggior parte delle volte, RTTI è sufficiente.

    
risposta data 27.10.2011 - 19:16
fonte

Leggi altre domande sui tag