Types de cast en C++ - C++ - Programmation
Marsh Posté le 24-06-2006 à 19:19:16
Google Knows
Marsh Posté le 24-06-2006 à 21:06:12
Quelle doc ? Google knows what ?
Les réponses dans cette cat sont de plus en plus intéressantes à lire.
/33> consultes http://www.gotw.ca/gotw/017.htm
C'est un sujet vaste, et pas inintéressant. J'avoue que je n'ai pas le courage ni le temps pour me lancer dans un exposé -- qui serait à coup sur inexact. Si tu as des questions plus précises, ça doit être jouable d'y répondre, ou au moins d'en discuter, autrement qu'à coup d'RTFM.
Tu peux aussi rajouter C-cast dans ta liste.
Marsh Posté le 24-06-2006 à 21:20:47
http://www.google.fr/search?hs=wsX [...] DcountryFR
premier lien
Et n'importe quel bouquin valable de c++ en cause ...
Marsh Posté le 24-06-2006 à 21:22:32
++fab a écrit : |
oui, en tenant compte que c'est déprécié.
Marsh Posté le 24-06-2006 à 21:23:45
++fab a écrit : Quelle doc ? Google knows what ? |
Il demande une explication des 4 casts C++ et des différences entre eux, il suffit de googler "C++ cast" pour avoir touzemille pages de résultat sur le sujet
_darkalt3_ a écrit : http://www.google.fr/search?hs=wsX [...] DcountryFR |
http://www.google.fr/search?q=C%2B%2B+cast
toute la page, et les suivantes
Marsh Posté le 24-06-2006 à 21:25:52
Ben oui, c'est quand même un minimum quand on étudie le c++ ...
++fab: Je ne pense pas qu'on puisse apprendre un langage sans s'auto-documenter sur les mécanisme de base
Marsh Posté le 24-06-2006 à 21:52:57
Bon je vais être plus explicite:
Sous VS 6.0, en MFC pourquoi
Code :
|
produit des warnings à la compilation?
Code :
|
Marsh Posté le 24-06-2006 à 21:55:48
sans doute parce que l'option /GR- desactive le support du rtti, il faut l'enlever, mais regarde quand meme la doc du compilateur pour etre sur
Marsh Posté le 25-06-2006 à 12:12:08
skelter a écrit : oui, en tenant compte que c'est déprécié. |
Je dirais plutôt déconseillé. Non déprécié au nom de la compatibilité C.
Mais dans la vraie vie, c'est le cast que je croise le plus souvent. Donc connaitre la différence entre chaque nouveau cast et le C-cast me parait important.
Marsh Posté le 25-06-2006 à 12:14:44
masklinn a écrit : Il demande une explication des 4 casts C++ et des différences entre eux, il suffit de googler "C++ cast" pour avoir touzemille pages de résultat sur le sujet |
Ce qui demande d'être capable de faire le tri entre les bonnes pages et les mauvaises. Chose que tu n'es pas capable de faire lorsque tu es débutant, et pas seulement.
Marsh Posté le 25-06-2006 à 12:23:35
_darkalt3_ a écrit : Ben oui, c'est quand même un minimum quand on étudie le c++ ... |
?
_darkalt3_ a écrit : ++fab: Je ne pense pas qu'on puisse apprendre un langage sans s'auto-documenter sur les mécanisme de base |
Je me demande juste si c'est la peine de moraliser toute personne qui veut avoir des informations sur les mécanismes de bases comme tu dis.
Marsh Posté le 25-06-2006 à 15:20:45
Mécanismes de base, je ne sais pas. Par contre il est certain que les cast C++ ne sont pas utilisés en MFC qui pourtant est un hybride C/C++. Vu la quantité de code qui m'est passé sous la main depuis plusieurs années, est-ce si important que ça lorsqu'on combine les cast avec la programmation défensive (contrôle post transtypage) ?
Marsh Posté le 25-06-2006 à 15:28:52
++fab a écrit : Je dirais plutôt déconseillé. |
oui, je croyais que ca l'était mais en fait non
++fab a écrit : Non déprécié au nom de la compatibilité C. |
il y a quand meme points qui permettent la compatibilité avec le C et qui sont dépréciés
Marsh Posté le 25-06-2006 à 15:32:24
test profil
Marsh Posté le 25-06-2006 à 15:51:51
skelter a écrit : il y a quand meme points qui permettent la compatibilité avec le C et qui sont dépréciés |
comme ?
Marsh Posté le 25-06-2006 à 15:54:55
slash33 a écrit : est-ce si important que ça lorsqu'on combine les cast avec la programmation défensive (contrôle post transtypage) ? |
Peux-tu en montrer un exemple ?
Marsh Posté le 25-06-2006 à 15:57:43
++fab a écrit : comme ? |
ben static en porté global pour rendre local a la TU une fonction ou un objet, et 'char * p = "machin";'
annexe D, D.2 et D.4
Marsh Posté le 25-06-2006 à 16:25:41
skelter a écrit : ben static en porté global pour rendre local a la TU une fonction ou un objet' |
à une fonction ? Ce n'est pas ce que je lis ...
Citation : et 'char * p = "machin";' |
Yep
Marsh Posté le 25-06-2006 à 16:48:59
++fab a écrit : Peux-tu en montrer un exemple ? |
Code :
|
D'accord le code défensif n'avertit du problème qu'en version debug.
Marsh Posté le 25-06-2006 à 16:51:10
ReplyMarsh Posté le 25-06-2006 à 17:04:19
ReplyMarsh Posté le 25-06-2006 à 17:06:36
slash33 a écrit :
|
Je ne connais pas la sémantique d'ASSERT_KINDOF, je ne peux donc pas commenter.
Marsh Posté le 25-06-2006 à 17:11:31
Hum. J'ai bien cherché là mais je n'ai pas trouvé:
http://www.open-std.org/JTC1/SC22/WG21/
Marsh Posté le 25-06-2006 à 17:14:35
++fab a écrit : Je ne connais pas la sémantique d'ASSERT_KINDOF, je ne peux donc pas commenter. |
Ben voici sa définition mais je ne suis pas sûr que ça t'aide
Code :
|
Marsh Posté le 25-06-2006 à 17:21:19
en gros c'est equivalent a
Code :
|
Marsh Posté le 25-06-2006 à 17:34:43
Quand le flag _DEBUG est positionné oui. Mais l'nstruction contrôle aussi le type de l'objet (et son héritage).
Un truc hérité de CObject en fait.
Marsh Posté le 25-06-2006 à 18:04:16
Je vois 2 problèmes avec le C-cast dans l'exemple MFC :
- la cv-qualification est ignoré.
- en cas d'héritage virtuel, AMHA le C-cast posera problème. un code MFC est-il compilable avec un autre compilateur que VC++ ?
Marsh Posté le 24-06-2006 à 18:58:44
Quelqu'un peut-il se dévouer pour expliquer les différences entre :
static_cast
dynamic_cast
reinterpret_cast et
const_cast
?