Sono un programmatore C ++ di inizio che viene da Java.
Mi sembra che i modelli C ++ e i generici Java siano in realtà molto simili. Li usi praticamente nelle stesse occasioni e allo stesso modo. E loro "sentono" lo stesso. Tuttavia posso pensare a due differenze tra i sistemi:
-
In Java è possibile utilizzare solo tipi di classe come argomenti di tipo, mentre in C ++ qualsiasi tipo si adatta. Non penso che questo sia significativo perché Java autoboxing è buono.
-
Una differenza più significativa: i modelli C ++ sono antropizzati. Significa che puoi chiamare qualsiasi operazione su un tipo generico
T
. Se non supporta l'operazione, viene generato un errore di compilazione. I generici di Java, tuttavia, non sono antropomorfi. Di default tutti gli argomenti di tipo sono di tipoObject
, e puoi specificare qualcosa di più specifico con la sintassiT extends Something
, che ci permette di chiamare suT
metodi definiti inSomething
.
Il secondo punto è piuttosto significativo. Comunque a parte quello, quali sono le differenze tra i due sistemi? Quali sono i pro e i contro di ciascuno? Sono simili o diversi nel loro complesso?