peterpaolo94
Utente Attivo
- Messaggi
- 254
- Reazioni
- 22
- Punteggio
- 38
Salve ragazzi, è un po di tempo oramai che non rientro sul forum per vari motivi, oggi però mi è venuto un dubbio riguardante la programmazione ed ho pensato di chiedere a voi delucidazioni.
Come da titolo, quando conviene usare lo static_cast<> rispetto ad regular cast?
ovviamente ho già cercato a dovere su Internet e molti miei dubbi sono svaniti, infatti ho capito che lo static_cast<> è un po più restrittivo del cast classico e permette una verifica a tempo di compilazione mentre il cast potrebbe risultare in errori a tempo di esecuzione (proprio perchè non fa controlli ne a tempo di compilazione ne in esecuzione).
Sono quindi giunto alla mia prima conclusione, ovvero che se sono sicuro di passare i giusti tipi ai cast, e sono sicuro che questi non daranno errori di conversione, allora posso tranquillamente usare il regular cast, giusto?
passiamo ora all'esempio:
perchè in questo esempio dovrei usare lo static cast rispetto al regular cast?
La mem_alloc restituisce un puntatore a void:
Come da titolo, quando conviene usare lo static_cast<> rispetto ad regular cast?
ovviamente ho già cercato a dovere su Internet e molti miei dubbi sono svaniti, infatti ho capito che lo static_cast<> è un po più restrittivo del cast classico e permette una verifica a tempo di compilazione mentre il cast potrebbe risultare in errori a tempo di esecuzione (proprio perchè non fa controlli ne a tempo di compilazione ne in esecuzione).
Sono quindi giunto alla mia prima conclusione, ovvero che se sono sicuro di passare i giusti tipi ai cast, e sono sicuro che questi non daranno errori di conversione, allora posso tranquillamente usare il regular cast, giusto?
passiamo ora all'esempio:
C++:
struct esempio {
/*
... Cose ...
*/
};
// cast regolare
esempio *ex = (esempio *)(mem_alloc(sizeof(esempio)));
//static_cast
esempio *ex = static_cast<esempio*>(mem_alloc(sizeof(esempio)));
perchè in questo esempio dovrei usare lo static cast rispetto al regular cast?
La mem_alloc restituisce un puntatore a void:
void * mem_alloc(dim)