QUESTION a un PRO en C++
#include <bits/stdc++.h>
using namespace std;
struct A {
virtual void print();
};
struct B : public A {
void print() override {
cout << "OK\n";
}
};
struct C: public A {
void print() override {
cout << "OKK\n";
}
};
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
C test;
test.print();
return 0;
}
Tu ne comprends pas quoi ?
Le 30 mai 2021 à 23:00:15 galoiseries2 a écrit :
Qu'est-ce que tu comprends pas ? Une classe abstraite ça permet de factoriser des comportements communs utilisant des propriétés particulières.
je sais ce que c'est, je ne sais pas comment les faire en c++
en fait j'ai cru comprendre qu'iul fallait utiliser le mot clef virtual mais que sur les attributs et les fonctions. J'ai fait que les classes abstraites en Java/C#
Le 30 mai 2021 à 23:01:43 :
Le 30 mai 2021 à 23:00:15 galoiseries2 a écrit :
Qu'est-ce que tu comprends pas ? Une classe abstraite ça permet de factoriser des comportements communs utilisant des propriétés particulières.je sais ce que c'est, je ne sais pas comment les faire en c++
en fait j'ai cru comprendre qu'iul fallait utiliser le mot clef virtual mais que sur les attributs et les fonctions. J'ai fait que les classes abstraites en Java/C#
bah tu cherches la syntaxe sur google comme un grand non ?
Le 30 mai 2021 à 23:01:13 gatias a écrit :
<code>#include <bits/stdc++.h>using namespace std;
struct A {
virtual void print();
};struct B : public A {
void print() override {
cout << "OK\n";
}
};struct C: public A {
void print() override {
cout << "OKK\n";
}
};int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
C test;
test.print();return 0;
}</code>Tu ne comprends pas quoi ?
Merci, en fait je suis embrouillé par virtual, quel est l'interet de mettre virtual sur chacun des attributs plutôt que de spécifier la classe comme étant abstraite ?
Le 30 mai 2021 à 23:01:43 :
Le 30 mai 2021 à 23:00:15 galoiseries2 a écrit :
Qu'est-ce que tu comprends pas ? Une classe abstraite ça permet de factoriser des comportements communs utilisant des propriétés particulières.je sais ce que c'est, je ne sais pas comment les faire en c++
en fait j'ai cru comprendre qu'iul fallait utiliser le mot clef virtual mais que sur les attributs et les fonctions. J'ai fait que les classes abstraites en Java/C#
virtual void Test() = 0; dans la classe mère bg
Le 30 mai 2021 à 23:03:50 mov_eax_0 a écrit :
Le 30 mai 2021 à 23:01:43 :
Le 30 mai 2021 à 23:00:15 galoiseries2 a écrit :
Qu'est-ce que tu comprends pas ? Une classe abstraite ça permet de factoriser des comportements communs utilisant des propriétés particulières.je sais ce que c'est, je ne sais pas comment les faire en c++
en fait j'ai cru comprendre qu'iul fallait utiliser le mot clef virtual mais que sur les attributs et les fonctions. J'ai fait que les classes abstraites en Java/C#bah tu cherches la syntaxe sur google comme un grand non ?
j'y peux rien si la syntaxe du c++ est pas claire, ce qu'on appelle classe abstraite en c++ j'ai l'impression que c'est une classe dont certains des attributs sont virtuels
Le 30 mai 2021 à 23:05:12 Volta75 a écrit :
Le 30 mai 2021 à 23:01:43 :
Le 30 mai 2021 à 23:00:15 galoiseries2 a écrit :
Qu'est-ce que tu comprends pas ? Une classe abstraite ça permet de factoriser des comportements communs utilisant des propriétés particulières.je sais ce que c'est, je ne sais pas comment les faire en c++
en fait j'ai cru comprendre qu'iul fallait utiliser le mot clef virtual mais que sur les attributs et les fonctions. J'ai fait que les classes abstraites en Java/C#virtual void Test() = 0; dans la classe mère bg
ça j'avais compris mais j'arrive pas à comprendre la cohérence du langage, genre on peut faire une classe semi abstraite avec certains objets abstraits ?
Le 30 mai 2021 à 23:04:12 :
Le 30 mai 2021 à 23:01:13 gatias a écrit :
<code>#include <bits/stdc++.h>using namespace std;
struct A {
virtual void print();
};struct B : public A {
void print() override {
cout << "OK\n";
}
};struct C: public A {
void print() override {
cout << "OKK\n";
}
};int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
C test;
test.print();return 0;
}</code>Tu ne comprends pas quoi ?
Merci, en fait je suis embrouillé par virtual, quel est l'interet de mettre virtual sur chacun des attributs plutôt que de spécifier la classe comme étant abstraite ?
putain ce que c'est laid le c++
Tu peux avoir des méthodes qui ne sont pas abstraites donc il faut spécifier quelle méthode va l'être, c'est comme ça.
Je ne vois pas en quoi le C++ est moche, quand on ne comprend rien ça peut faire peur mais il n'y a rien de moche.
Le 30 mai 2021 à 23:07:13 :
Le 30 mai 2021 à 23:05:12 Volta75 a écrit :
Le 30 mai 2021 à 23:01:43 :
Le 30 mai 2021 à 23:00:15 galoiseries2 a écrit :
Qu'est-ce que tu comprends pas ? Une classe abstraite ça permet de factoriser des comportements communs utilisant des propriétés particulières.je sais ce que c'est, je ne sais pas comment les faire en c++
en fait j'ai cru comprendre qu'iul fallait utiliser le mot clef virtual mais que sur les attributs et les fonctions. J'ai fait que les classes abstraites en Java/C#virtual void Test() = 0; dans la classe mère bg
ça j'avais compris mais j'arrive pas à comprendre la cohérence du langage, genre on peut faire une classe semi abstraite avec certains objets abstraits ?
https://www.learncpp.com/cpp-tutorial/pointers-and-references-to-the-base-class-of-derived-objects/
Le 30 mai 2021 à 23:08:20 gatias a écrit :
Le 30 mai 2021 à 23:04:12 :
Le 30 mai 2021 à 23:01:13 gatias a écrit :
<code>#include <bits/stdc++.h>using namespace std;
struct A {
virtual void print();
};struct B : public A {
void print() override {
cout << "OK\n";
}
};struct C: public A {
void print() override {
cout << "OKK\n";
}
};int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
C test;
test.print();return 0;
}</code>Tu ne comprends pas quoi ?
Merci, en fait je suis embrouillé par virtual, quel est l'interet de mettre virtual sur chacun des attributs plutôt que de spécifier la classe comme étant abstraite ?
putain ce que c'est laid le c++ Tu peux avoir des méthodes qui ne sont pas abstraites donc il faut spécifier quelle méthode va l'être, c'est comme ça.
Je ne vois pas en quoi le C++ est moche, quand on ne comprend rien ça peut faire peur mais il n'y a rien de moche.
Ok mais si je fais virtual ça change quoi par rapport à une fonction normale que je redéfinie plus tard ?
De toute façon c'est le langage le plus puissant donc osef
Le 30 mai 2021 à 23:07:13 :
Le 30 mai 2021 à 23:05:12 Volta75 a écrit :
Le 30 mai 2021 à 23:01:43 :
Le 30 mai 2021 à 23:00:15 galoiseries2 a écrit :
Qu'est-ce que tu comprends pas ? Une classe abstraite ça permet de factoriser des comportements communs utilisant des propriétés particulières.je sais ce que c'est, je ne sais pas comment les faire en c++
en fait j'ai cru comprendre qu'iul fallait utiliser le mot clef virtual mais que sur les attributs et les fonctions. J'ai fait que les classes abstraites en Java/C#virtual void Test() = 0; dans la classe mère bg
ça j'avais compris mais j'arrive pas à comprendre la cohérence du langage, genre on peut faire une classe semi abstraite avec certains objets abstraits ?
Le C++ est le langage le plus puissant et complet existant. Pour répondre à ta question, si une classe possède au moins 1 méthode virtuelle pure (=0) alors elle est considérée abstraite, et on ne peut pas instancier d'objet de classe abstraite.
Si l'on souhaite hériter de cette classe, alors il faut redéfinir toutes les méthodes virtuelles pures se trouvant dans la classe mère, sinon la classe enfant est elle aussi considérée comme abstraite.
Le 30 mai 2021 à 23:13:26 :
Le 30 mai 2021 à 23:12:18 :
Bientôt 3 ans que j'étudie le C++ avec le Primer, j'en suis toujours pas à ce chapitreJ'ai créé un cours complet de C++ Moderne (C++11 au C++20), si tu es intéressé mp moi je pourrais peut etre t'aider tu m'as l'air assez motivé
Ce serait parfait s'il te plaît ! Mon livre aborde simplement le C++11 et ce serait super bien pour compléter mon apprentissage !
Le 30 mai 2021 à 23:11:28 Volta75 a écrit :
Le 30 mai 2021 à 23:07:13 :
Le 30 mai 2021 à 23:05:12 Volta75 a écrit :
Le 30 mai 2021 à 23:01:43 :
Le 30 mai 2021 à 23:00:15 galoiseries2 a écrit :
Qu'est-ce que tu comprends pas ? Une classe abstraite ça permet de factoriser des comportements communs utilisant des propriétés particulières.je sais ce que c'est, je ne sais pas comment les faire en c++
en fait j'ai cru comprendre qu'iul fallait utiliser le mot clef virtual mais que sur les attributs et les fonctions. J'ai fait que les classes abstraites en Java/C#virtual void Test() = 0; dans la classe mère bg
ça j'avais compris mais j'arrive pas à comprendre la cohérence du langage, genre on peut faire une classe semi abstraite avec certains objets abstraits ?
Le C++ est le langage le plus puissant et complet existant. Pour répondre à ta question, si une classe possède au moins 1 méthode virtuelle pure (=0) alors elle est considérée abstraite, et on ne peut pas instancier d'objet de classe abstraite.
Si l'on souhaite hériter de cette classe, alors il faut redéfinir toutes les méthodes virtuelles pures se trouvant dans la classe mère, sinon la classe enfant est elle aussi considérée comme abstraite.
Je comprends mieux merci, faut que j'essaie de comprendre la signification d'un point de vue compilation de '=0'
Le 30 mai 2021 à 23:13:26 Volta75 a écrit :
Le 30 mai 2021 à 23:12:18 :
Bientôt 3 ans que j'étudie le C++ avec le Primer, j'en suis toujours pas à ce chapitreJ'ai créé un cours complet de C++ Moderne (C++11 au C++20), si tu es intéressé mp moi je pourrais peut etre t'aider tu m'as l'air assez motivé
moi ça m'intéresse, je suis en L3 et je vais peut être aller en Master système embarqués et le C++ est un requis indispensable
Données du topic
- Auteur
- Uraldium228
- Date de création
- 30 mai 2021 à 22:54:54
- Nb. messages archivés
- 44
- Nb. messages JVC
- 44