Accueil > Forum > > > > Template ou virtuel
Template ou virtuel
mardi 8 décembre 2009 à 19:58:00 |
Template ou virtuel

cogno
|
Bonjour les amis,
supposons un pointeur sur un Objet A, et fct une fonction membre de l'objet.
quelle est la différence fondamentale entre:
1/ La classe est définie dans un template de type T, et on fait:
T * A;
A->fct()
2/ La classe n'est pas définie dans un template, mais sa fonction fct est virtuelle
Objet * A;
A->fct()
Cette question m'a été posée en entretien d'embauche, et j'ai séché.
Merci
|
|
mardi 8 décembre 2009 à 21:15:31 |
Re : Template ou virtuel

CptPingu
|
Réponse acceptée !
1) La méthode appelée est une méthode généré à la compilation. Il y aura autant de méthode construites que de type l'utilisant.
2) Si la méthode est virtuelle, alors cela veut dire qu'elle peut être redéfinit dans les classes filles. Dans le premier cas, si la méthode n'est pas virtuelle, il n'est pas dit qu'elle soit redéfinit, dans certains cas.
|
|
mardi 8 décembre 2009 à 21:21:15 |
Re : Template ou virtuel

cogno
|
Réponse acceptée !
Bonjour Pingu,
donc toi tu dis que la différence fondamentale entre 1 et 2, c'est le moment ou sont prises en compte les fonctions?
Une très tot, lors de la compilation (cas 1/), et l'autre au moment de l'exécution (cas 2/)?
|
|
mardi 8 décembre 2009 à 21:27:48 |
Re : Template ou virtuel

CptPingu
|
Réponse acceptée !
Non, l'une est construite, donc écrite à la compilation, l'autre non. En revanhce les deux, sont construites à la compilation. Il peut y avoir plusieurs versions d'une méthode templaté, mais une seule d'une méthode "normale".
Les deux ne sont pas en opposition et servent deux but différents, donc j'ai du mal à comprendre ce que l'on voulait te faire dire.
|
|
mardi 8 décembre 2009 à 21:35:54 |
Re : Template ou virtuel

cogno
|
Réponse acceptée !
On m'a parlé d'une différence fondamentale... (et pas de les comparer en disant l'une est mieux..)
Donc j'suis parti dans un délire (je pense) de temps d'exécution, en disant que le template doit checker le type, l'adapter...
Mais bon je me sentais comme sur du sable mouvant où mes mots faisaient vibrer le sol :)
Dans ton dernier commentaire Mr Pingu, tu dis que la version Template est écrite a la compilation et l'autre non?
|
|
mardi 8 décembre 2009 à 21:42:05 |
Re : Template ou virtuel

CptPingu
|
Réponse acceptée !
Soit:
Code C/C++ :
template <typename T>
void func(T x)
{
...
}
Ce code "n'existe pas". Tant que tu ne l'utilise pas, il ne sera pas présent dans ton code compilé. A chaque fois que tu l'utilise, une nouvelle version est créée.
Ex:
Code C/C++ :
func<int>(4);
func<MaClasse>(new MaClass());
Lancera de manière transparente l'écriture de deux fonctions:
Code C/C++ :
void func(int x)
{
...
}
void func(MaClasse x)
{
...
}
|
|
mardi 8 décembre 2009 à 21:45:52 |
Re : Template ou virtuel

cogno
|
Réponse acceptée !
d'accord, alors que le virtual...?
|
|
mardi 8 décembre 2009 à 21:52:24 |
Re : Template ou virtuel

CptPingu
|
Réponse acceptée !
N'a rien à voir.
Virtual veut dire: Il est possible de redéfinir une méthode dans une méthode fille, en cas d'upcasting. (L'upcasting est le fait de faire rentrer une classe fille dans une classe mère).
Ex:
Code C/C++ :
#include <iostream>
class Mother
{
public:
void aff() { std::cout << "mother" << std::endl; }
};
class Daughter : public Mother
{
public:
void aff() { std::cout << "daughter" << std::endl; }
};
class MotherWithVirtual : public Mother
{
public:
virtual void aff() { std::cout << "mother" << std::endl; }
};
class Daughter2 : public MotherWithVirtual
{
public:
void aff() { std::cout << "daughter" << std::endl; }
};
int main()
{
Daughter d;
d.aff(); // Affichera bien "daughter"
Daughter* b = new Daughter;
b->aff(); // Affichera bien "daughter"
Mother* m = new Daughter;
m->aff(); // N'affichera pas "daughter", mais "mother"
MotherWithVirtual* k = new Daughter2;
k->aff(); // Affichera bien "daughter"
return 0;
}
|
|
mardi 8 décembre 2009 à 21:56:59 |
Re : Template ou virtuel

cogno
|
Réponse acceptée !
Merci Pingu,
C est les deux cas de fonctionnements des Template et des Virtual. Cependant j'pense pas que le mec attendait ça. Il m'a vraiment dit, il y a une différence fondamentale.
Ne serait-ce pas dans l'appel des fonctions?
Que se passe-t-il quand on appelle une fonction d'un template (point par point) ?
Que se passe-t-il exactement qu'on appelle un fonction virtuelle (étant une classe fille je suppose..) ?
Il doit y avoir un détail qui rend ces deux cas très différents
|
|
mardi 8 décembre 2009 à 21:58:23 |
Re : Template ou virtuel

cogno
|
je ne pense pas que ce soit une différence fonctionnelle
|
|
Cette discussion est classée dans : fonction, objet, template, virtuel, fct
Répondre à ce message
Sujets en rapport avec ce message
fonction templates amies [ par littlefl ]
Ma question peu paraître simple (et peut-être qu'elle l'est) mais je n'arrive pas à déclarer une fonction template amie d'une classe. La raison, c'ets
compteur binaire [ par DJOL ]
bonjour ami developpeur!je suis en 1ere année de bts iris et je dois réaliser un compteur binaire en programmation objet. l'objet est réaliser mais la
fonction pr detruire l'objet qui l'appel [ par mat74 ]
Salut a ts ,voila je voudrai creer une fonction qui permettrai de detruire l'objet qui l'appel ( ds une classe )j'ai essayer sa :void ennemis::detruir
quelle fonction pour avoir le handle afin de crée un objet directinput ? [ par vini456 ]
bonjour ,quelle est la fonction pour avoir le handle de ma winmain afin de crée un objet directinput ?
une classe static [ par Adeon ]
bonjour a tous!je suis sur le developpement d'un jeux.certaine classe ne contienne qu'un seul objet comme par exemple la classe Interface, ou encore l
Class derivée , Template ( POURQUOI ES-CE CI DIFFICILE) ??? [ par nawakator ]
J'ai déjà posé cette question, mais je la repose car elle est essentiel pour mon projet!J'ai créer un template permettant de géré une liste chainé de
contenu d'un objet [ par erazor ]
salut, j'ai besoin de recuperer toutes les donnes contenues dans un objet pour les utiliser avec une fonction appartenant a un autre objet, avez une i
inclure un objet dans une fonction d'un autre objet... [ par ptidiable ]
Salut a tous :)Voila j'ai deux Objets : Serpent et Moteurj'aimerais fair une fonction dans serpent qui reçoivent en paramétre un objet de type Moteurl
appliquer la fonction "sleep" sur un seul objet [ par malbackt ]
Bonsoir :C'est encore moi ;S'il vous plait cette fois ci je veux savoir comment appliquerla fonction "Sleep()"sur un seul objet de la scène, et pas s
reprendre une fct de main [ par MirKoRn ]
je voudrai savoir si il y a une fonction pour reprendre les éléments de main(pour moi un tableau) pour le mettre dans une autre fonction, toujours sur
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|