résumé déclarations de classe en c++
Supposons que foo
est un résumé class
dans un programme C++, pourquoi est-il acceptable de déclarer des variables de type foo*
, mais pas de type foo
?
- Vous pouvez également déclarer les références pour les classes abstraites comme
foo&
. - Parce que je veux manipuler des objets de forme de type générique (donc j'ai besoin d'un pointeur ou une référence à une forme). Mais je ne voulez certainement pas des objets de forme de type, comme c'est une abstraction j'ai besoin d'objets qui sont des carrés ou des cercles.
Vous devez vous connecter pour publier un commentaire.
Parce que si vous déclarez une foo vous devez initialiser/instancier. Si vous déclarez une *foo, vous pouvez l'utiliser pour pointer vers des instances de classes qui héritent de foo mais ne sont pas abstraites (et donc peut être instancié)
Vous ne peut pas instancier une classe abstraite. Et il y a des différences entre les déclarations suivantes.
Également depuis les classes abstraites sont généralement de l'utiliser en tant que parents (Classes de Base - ABC) que vous utilisez pour polymorphisem
Car un pointeur vers un foo n'est pas un foo - ils sont complètement différents types. Faire une classe abstraite dit que vous ne pouvez pas créer des objets de type classe, non pas que vous ne pouvez pas créer des pointeurs (ou références) à la classe.
Parce que, si nous déclarons foo meanz nous créons une instance de la classe foo qui est un résumé, et il est impossible de créer une instance d'une classe abstraite. Cependant, nous pouvons utiliser le pointeur d'une classe abstraite à point à son lecteur de classes à prendre les avantages de polymorphisme. . .