2010-05-12 9 views
9

Non ho il mio Effective C++ con me e questo mi disturba così tanto che devo chiedere la mia sanità mentale. DatoRiferimenti e Object Slicing

class Foo : public Bar{} 

void MyFunc(Bar &_input); 

Se mi passa in un Foo, sto aggrovigliare con il problema slicing o ho evitato?

risposta

11

Non è un problema, perché stai trasmettendo un riferimento. Non stai creando un nuovo oggetto, ma permetti a MyFunc di accedere all'oggetto originale.

+0

Grazie. Questo mi stava facendo impazzire. – wheaties

2

Il taglio è solo un problema quando si esegue il cast di un oggetto sulla classe padre. Non ci sono tagli quando si lanciano puntatori o riferimenti.

5

Dal momento che si sta passando il riferimento - senza, a meno che non più tardi di assegnare a un'istanza di Bar.