Passaggio da Java e C a C ++

2

Ho imparato Java e sono abbastanza competente nella programmazione. Ho anche imparato C di recente.

Ho esaminato un confronto tra Java e C ++ e mi piacciono le caratteristiche del C ++ come l'overloading dell'operatore e la sua velocità.

Quindi, C ++ è un linguaggio OOP, ma ha anche tutte le cose che java non ha e C, come i puntatori e l'allocazione della memoria. Devo modificare qualcosa nel mio design OOP per prendere in considerazione i puntatori e l'allocazione della memoria? In tal caso, cosa devo cambiare? In caso contrario, perché no?

    
posta shoham 22.06.2014 - 12:32
fonte

3 risposte

10

In termini di OO design , non devi cambiare molto quando vai da Java a C ++. La maggior parte dei principi di progettazione è in realtà indipendente dal linguaggio e applicabile sia a Java che a C ++.

Il modo in cui esprimi il tuo design in codice può differire parecchio tra le lingue. La cosa più importante da ricordare è C ++ non ha la raccolta automatica dei rifiuti . Questo e il fatto che qualsiasi oggetto C ++ può essere creato senza usare new sono i due fattori guida dietro le differenze nell'esprimere il tuo design in C ++ o codice Java.

In particolare, è molto comune in C ++ esprimere la composizione avendo direttamente un membro di tipo X in classe Y senza coinvolgere un puntatore.
Più in generale, se è possibile evitare l'allocazione dinamica della memoria in C ++, farlo. Se non è possibile, verifica se è disponibile un puntatore intelligente in grado di garantire che la memoria venga nuovamente rilasciata al momento giusto.

    
risposta data 22.06.2014 - 13:34
fonte
0

No, non è necessario modificare nulla nella progettazione se il progetto è stato ben concepito sin dall'inizio. L'OOD dovrebbe essere indipendente dal linguaggio, il che significa che dovresti essere in grado di scegliere qualsiasi linguaggio OO e implementarlo.

    
risposta data 22.06.2014 - 13:32
fonte
0

Poiché segnala Bart van Ingen Schenau , il C ++ non ha garbage collection. Ciò significa che per la maggior parte devi limitare i tuoi progetti a quelli in cui ogni oggetto ha un unico proprietario non ambiguo che lo smaltisce quando il proprietario esce dal campo di applicazione. Qualunque cosa più complicata corre il rischio di una perdita di memoria.

    
risposta data 22.06.2014 - 14:59
fonte

Leggi altre domande sui tag