static_cast convertit l'expression en type d'identification de type, mais il n'y a pas de vérification de type à l'exécution pour garantir la sécurité de la conversion.
① Utilisé pour la conversion de pointeurs ou de références entre les classes de base (classes parents) et les classes dérivées (sous-classes) dans la hiérarchie des classes.
L'upcasting (conversion d'un pointeur ou d'une référence d'une classe dérivée en une représentation de classe de base) est sûr
Lors de l'exécution d'un downcasting (conversion d'un pointeur de classe de base ou d'une référence en une représentation de classe dérivée), il n'y a pas de vérification de type dynamique, donc il est dangereux.
De : http://baike.baidu.com/link?u...
Je voudrais demander, que signifie la partie en gras ? Que signifie dangereux ?
Par exemple, il existe une classe parent
A
,派生出两个子类B
和C
,有一个A
类指针或引用a
指向了一个B
类对象b,此时用static_cast
进行下行转换,可以将其转换成C
类的对象(指针或引用),此时就会出现不安全,因为C
类的一些成员函数/变量对B
类的对象不适用。简单来说,就是可以利用
static_cast
qui convertit les objets de différentes sous-classes de la même classe parent entre eux, ce qui entraîne des erreurs de type.Par exemple :