Methoide virtuelle pure avec un body

Methoide virtuelle pure avec un body - C++ - Programmation

Marsh Posté le 13-11-2006 à 11:12:12    

Je viens de tomber sur un code rigolo :  
 

Code :
  1. class Toto {
  2. void Operation () {
  3. }
  4. virtual void Operation2 () = 0;
  5. virtual void Operation3 () = 0 {
  6. }
  7. };


 
La troisième opération est une méthode virtuelle pure, mais avec un body. Es-ce légal du point de vu c++ ? Cela signifierai que la classe est abstraite, mais que Operation3 a quand même un body par défaut :??:
 
Si vous avez ou fgouiller dans le K&R, je suis preneur.


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 13-11-2006 à 11:12:12   

Reply

Marsh Posté le 13-11-2006 à 11:23:06    

kadreg a écrit :

Si vous avez ou fgouiller dans le K&R, je suis preneur.


K&R c'est pour le C :o


---------------
Töp of the plöp
Reply

Marsh Posté le 13-11-2006 à 11:24:58    

Sinon:
 
( http://www.gotw.ca/gotw/031.htm )
 

Citation :


2. Force Conscious Acceptance of Default Behaviour
 
If a derived class doesn't choose to override a normal virtual, it just inherits the base version's behaviour by default. If you want to provide a default behaviour but not let derived classes just inherit it "silently" like this, you can make it pure virtual but still provide a default that the derived class author has to call deliberately if he wants it:
 

Code :
  1. class B {
  2.     public:
  3.         virtual bool f() = 0;
  4.     };
  5.     bool B::f() {
  6.         return true// this is a good default, but
  7.     }                 // shouldn't be used blindly
  8.     class D : public B {
  9.     public:
  10.         bool f() {
  11.             return B::f(i); // if D wants the default
  12.         }             // behaviour, it has to say so
  13.     };


Message cité 1 fois
Message édité par _darkalt3_ le 13-11-2006 à 11:25:11

---------------
Töp of the plöp
Reply

Marsh Posté le 13-11-2006 à 11:37:42    

_darkalt3_ a écrit :

K&R c'est pour le C :o


 
J'sais pas écrire stroustroup =sans faire de faute :o


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 13-11-2006 à 11:40:52    


 
ok, merci :o


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 13-11-2006 à 11:47:43    

kadreg a écrit :

J'sais pas écrire stroustroup =sans faire de faute :o


je vois ça :o


---------------
Töp of the plöp
Reply

Marsh Posté le 13-11-2006 à 11:48:03    


de rien [:ojap]


---------------
Töp of the plöp
Reply

Marsh Posté le 13-11-2006 à 11:49:30    

donc oui c'est légal.

Reply

Marsh Posté le 13-11-2006 à 13:06:37    

Maintenant : expliquer à un client que c'est son compilateur qui a un problème :o


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 13-11-2006 à 13:15:53    

attention, y avait un vieux bug 'virtual bool' sur une version de VC6, un truc très méchant, ça générait du mauvais code.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed