Maison développement back-end Tutoriel C#.Net Quelle est la différence entre une fonction virtuelle et une fonction virtuelle pure ?

Quelle est la différence entre une fonction virtuelle et une fonction virtuelle pure ?

Nov 17, 2020 am 09:30 AM
fonction virtuelle pure fonction virtuelle

La différence entre les fonctions virtuelles et les fonctions virtuelles pures : 1. Les fonctions virtuelles pures n'ont que des définitions et aucune implémentation ; les fonctions virtuelles ont à la fois des définitions et des codes d'implémentation ; 2. Une classe contenant des fonctions virtuelles pures ne peut pas définir ses objets, mais une classe contenant des fonctions virtuelles le peut.

Quelle est la différence entre une fonction virtuelle et une fonction virtuelle pure ?

Recommandations associées : "Tutoriel vidéo C++"

Fonction virtuelle (virtuelle impure)

La fonction principale de la fonction virtuelle de C++ est le "polymorphisme d'exécution". La classe parent fournit l'implémentation de la fonction virtuelle et fournit l'implémentation de fonction par défaut pour la sous-classe.
Les sous-classes peuvent remplacer les fonctions virtuelles de la classe parent pour réaliser la spécialisation de la sous-classe.
Ce qui suit est une fonction virtuelle dans une classe parent :

class A
{
public:
     virtual void ss()
    {
        cout<<"我是基类的虚函数"<<endl;
    }
};
Copier après la connexion

Fonction virtuelle pure (virtuelle pure)

Une classe en C++ qui contient des fonctions virtuelles pures est appelé C'est une "classe abstraite". Les classes abstraites ne peuvent pas utiliser new pour créer des objets. Seules les sous-classes qui implémentent cette fonction virtuelle pure peuvent créer de nouveaux objets.
La fonction virtuelle pure en C++ ressemble plus à "fournir uniquement des déclarations, pas d'implémentation", c'est une contrainte sur les sous-classes et c'est un "héritage d'interface".
Les fonctions virtuelles pures en C++ sont aussi une sorte de "polymorphisme d'exécution".
Par exemple, la classe suivante contient des fonctions virtuelles pures, qui est une "classe abstraite" :

class A
{
public:
    virtual void out1(string s)=0;  //我是基类的虚函数 
};
Copier après la connexion

Par exemple,

#include<iostream>
#include<string>
#include<cstring>
#include<cstdlib>
#include<algorithm>
using namespace std;
class a
{
	private:
	
	public:
		a(){      //构造函数用内联函数的形式 
			
		}
		//虚函数 
		virtual  void  xhs(){   	   //这个虚函数必须得在基类中实现 
			cout<<"我是基类的虚函数"<<endl;//即使是空的虚函数也要在基类中实现 
		}  //派生类中可以不写这个函数,但是派生类对象调用时会调用积累的虚函数 
		
		//纯虚函数 
		virtual void cxhs() =0;  //这个纯虚函数不在基类中实现,必须在子类中实现 
		
}; 
class b:public a
{
	private:
		
    public:
    	void xhs(){         //这个是可有可无的 
    		cout<<"我是派生类覆盖基类虚函数的函数"<<endl; 
		}                        //*
		                         //*
		void cxhs(){         //这个是必须有实现的 
			cout<<"我是派生类覆盖基类虚函数的函数"<<endl; 
		}       //*              //*
}; 				//* 			 //*
int main()      //*              //*
{               //*              //*
	b c;        //*              //* 
	c.xhs();    //*           //调用派生类的 
	c.cxhs();//调用派生类的 
}
Copier après la connexion

Fonctions virtuelles et fonctions virtuelles pures Les différences

1) Les fonctions virtuelles pures n'ont que des définitions et aucune implémentation tandis que les fonctions virtuelles ont à la fois des définitions et des codes d'implémentation ;

Les fonctions virtuelles pures n'ont généralement pas de partie d'implémentation de code, comme virtual void print() = 0; 2) et les fonctions virtuelles générales doivent avoir une partie d'implémentation de code, sinon une erreur de fonction non définie se produira.

2) Une classe contenant des fonctions virtuelles pures ne peut pas définir ses objets, mais une classe contenant des fonctions virtuelles le peut.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Explication détaillée du débogage des fonctions C++ : Comment déboguer les problèmes dans les fonctions virtuelles ? Explication détaillée du débogage des fonctions C++ : Comment déboguer les problèmes dans les fonctions virtuelles ? May 02, 2024 pm 03:42 PM

Méthodes de débogage des fonctions virtuelles : définissez les points d'arrêt à parcourir ; utilisez assert() pour vérifier les conditions ; utilisez les outils de débogage pour vérifier les types dynamiques, les piles de fonctions et redéfinir les fonctions virtuelles.

Comment la surcharge de fonctions C++ et les fonctions virtuelles fonctionnent-elles ensemble ? Comment la surcharge de fonctions C++ et les fonctions virtuelles fonctionnent-elles ensemble ? Apr 26, 2024 am 10:09 AM

La surcharge de fonctions en C++ permet de définir différentes implémentations pour des fonctions du même nom avec des paramètres différents, tandis que les fonctions virtuelles permettent de remplacer les fonctions de la classe de base dans les classes dérivées pour obtenir un polymorphisme. La surcharge de fonctions et les fonctions virtuelles peuvent fonctionner ensemble. En concevant une fonction virtuelle surchargée dans la classe de base, la classe dérivée ne peut surcharger que la version d'une combinaison de paramètres spécifique, offrant ainsi un polymorphisme plus flexible, comme le calcul de différents types dans des cas pratiques. de la forme depuis son origine.

Interaction entre les fonctions amies C++ et les fonctions virtuelles Interaction entre les fonctions amies C++ et les fonctions virtuelles Apr 16, 2024 pm 03:45 PM

En C++, les fonctions amies interagissent avec les fonctions virtuelles afin que la fonction amie puisse accéder à la fonction virtuelle et appeler la fonction amie dans la classe dérivée pour accéder aux membres privés de la classe de base. Cette interaction peut être utilisée pour accéder à des données cachées dans la hiérarchie d'héritage ou pour implémenter un comportement polymorphe.

Comment déclarer et appeler des fonctions virtuelles en C++ ? Comment déclarer et appeler des fonctions virtuelles en C++ ? Apr 12, 2024 pm 04:03 PM

Une fonction virtuelle est un mécanisme de polymorphisme qui permet à une classe dérivée de remplacer les fonctions membres de sa classe de base : Déclaration : Ajoutez le mot-clé virtual avant le nom de la fonction. Appel : à l’aide d’un pointeur ou d’une référence de classe de base, le compilateur se liera dynamiquement à l’implémentation appropriée de la classe dérivée. Cas pratique : En définissant la classe de base Shape et ses classes dérivées Rectangle et Circle, il démontre l'application de fonctions virtuelles en polymorphisme, calcul d'aire et dessin de formes.

Une fonction C++ peut-elle être déclarée virtuelle ? Quel est le rôle des fonctions virtuelles ? Une fonction C++ peut-elle être déclarée virtuelle ? Quel est le rôle des fonctions virtuelles ? Apr 19, 2024 pm 06:06 PM

Les fonctions virtuelles en C++ permettent aux classes dérivées de redéfinir les méthodes héritées des classes de base pour réaliser le polymorphisme. La syntaxe est la suivante : déclarez une fonction virtuelle avec le mot-clé virtual dans la classe de base et redéfinissez-la avec override dans la classe dérivée. En appelant une fonction virtuelle via un pointeur ou une référence, un objet de classe dérivée peut appeler une fonction virtuelle de classe de base. Les principales fonctions des fonctions virtuelles comprennent : la réalisation du polymorphisme, la prise en charge de la liaison dynamique et la fourniture d'abstraction.

Le secret des fonctions virtuelles C++ révélé Le secret des fonctions virtuelles C++ révélé Apr 19, 2024 am 09:18 AM

Les fonctions virtuelles utilisent la liaison dynamique pour déterminer la fonction à appeler au moment de l'exécution, réalisant ainsi le polymorphisme. Ses avantages incluent l’évolutivité et la réutilisabilité, mais cela introduit également des frais généraux et de la complexité. Les fonctions virtuelles sont souvent utilisées pour implémenter des méthodes de différents types d'objets de manière uniforme.

Compétences d'application des fonctions virtuelles et des fonctions virtuelles pures en C++ Compétences d'application des fonctions virtuelles et des fonctions virtuelles pures en C++ Aug 22, 2023 am 11:33 AM

Les fonctions virtuelles et les fonctions virtuelles pures en C++ sont des outils couramment utilisés par de nombreux programmeurs qui utilisent la programmation orientée objet. Sous réserve de leur utilisation correcte, la flexibilité et la maintenabilité du programme peuvent être considérablement améliorées. Cet article discutera des compétences d'application des fonctions virtuelles et des fonctions virtuelles pures, et partagera quelques expériences pratiques de développement. 1. Fonction virtuelle 1. Qu'est-ce qu'une fonction virtuelle ? Les fonctions virtuelles sont une technique utilisée pour implémenter le polymorphisme, qui permet aux fonctions membres d'une classe d'être déterminées dynamiquement au moment de l'exécution. Lorsqu'une fonction virtuelle est appelée à l'aide d'un pointeur ou d'une référence de classe de base, le programme

Comment les fonctions virtuelles pures favorisent-elles le polymorphisme en C++ ? Comment les fonctions virtuelles pures favorisent-elles le polymorphisme en C++ ? Jun 03, 2024 pm 08:01 PM

En C++, les fonctions virtuelles pures sont déclarées mais non implémentées dans la classe de base, obligeant les classes dérivées à implémenter un comportement spécifique pour promouvoir le polymorphisme. Les classes dérivées doivent implémenter toutes les fonctions virtuelles pures, sinon elles doivent également devenir des classes abstraites. Les fonctions virtuelles pures garantissent le polymorphisme en garantissant que seules les classes qui implémentent toutes les fonctions virtuelles pures peuvent être utilisées comme pointeurs ou références à des classes abstraites. Dans des cas pratiques tels que le dessin graphique, il peut garantir que tous les objets de forme peuvent répondre aux appels draw(), atteindre le polymorphisme et améliorer l'évolutivité et la maintenabilité du code.

See all articles