Tag: c, cpp, pointers, memory-management, oop, compilation
Livello: base
TL;DR: Sintesi rapida sui concetti fondamentali e le differenze principali tra C e C++, utile per un ripasso veloce prima di un colloquio tecnico.[cite: 2]
malloc/free, in C++ si preferiscono new/delete.*) indicano indirizzi di memoria; le reference (&) in C++ creano alias più sicuri e meno proni a errori.std::vector, std::map) e algoritmi predefiniti non presenti in C.malloc e new? R: malloc alloca solo blocchi di memoria grezza e restituisce un void*, mentre new alloca memoria, chiama il costruttore dell'oggetto e restituisce un puntatore tipizzato.
virtual in C++?R: Serve a definire metodi nelle classi base che possono essere sovrascritti (overriding) nelle classi derivate, permettendo il polimorfismo a runtime.
R: Si verifica quando la memoria allocata dinamicamente non viene deallocata. In C++ si previene utilizzando gli smart pointer (std::unique_ptr, std::shared_ptr) introdotti col C++11.
virtual in una classe base polimorfica.// Esempio C++ di classe semplice
#include <iostream>
#include <string>
class Persona {
private:
std::string nome;
public:
Persona(std::string n) : nome(n) {}
void saluta() {
std::cout << "Ciao, sono " << nome << std::endl;
}
};
int main() {
Persona p("Umberto");
p.saluta();
return 0;
}
[ ] Gestione manuale della memoria (differenze tra stack e heap).
[ ] Regola del tre / cinque / zero in C++.
[ ] Smart pointers in C++11.