IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

classdef et destructeur


Sujet :

MATLAB

  1. #1
    Membre confirmé Avatar de cboudy
    Profil pro
    Ingénieur informatique industrielle
    Inscrit en
    Avril 2006
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur informatique industrielle
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 406
    Points : 616
    Points
    616
    Par défaut classdef et destructeur
    bonjour,
    j'essaie de développer une classe sous matlab qui s'alloue une ressource lors de l'appel de constructeur et qui doit libérer cette ressource lors de la destruction d'une instance.
    J'ai essayé en implémentant la fonction delete(), mais la fonction ne s'exécute que lorsque je fais un delete(obj) explicitement, et pas quand je fais un clear.
    Voici mes deux bouts de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    % destest.m
    % le test à lancer
    function destest
        disp('----------------------------')
        do_test(true);
        do_test(false); % lors de cet appel la fonction delete n'est pas appelée
    end
     
     
    function do_test(callDelete)
        disp ('Debut test')
        monDestr = destr();
        if callDelete
            delete(monDestr)
        end
        disp ('Fin test')
    end
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    % destr.m
    %petite classe avec un constructeur et un delete
    classdef destr
        methods
            function obj = destr(obj)
                disp '-->Creation'
            end
            function delete(obj) 
                disp '-->Destruction'
            end
        end
    end

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    Je suis tombé sur ceci dans lequel on peut lire notamment :
    A MATLAB handle class can define a delete method that behaves very much like a destructor in languages like C++ (Figures 3a and 3b). In MATLAB, a delete method is called just before an object is destroyed because the object can no longer be accessed from any MATLAB variable. The delete method can be used to close a file, close an external application, or notify another object that needs to react to the destruction of the first object. It is defined by the handle class, and only handle classes have destructors in MATLAB. This is because MATLAB uses the handle class to represent tangible objects and objects with unique identities. Conceptual objects never really cease to exist—for example, the number 5 doesn't cease to exist because it is no longer held within a variable.
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  3. #3
    Membre confirmé Avatar de cboudy
    Profil pro
    Ingénieur informatique industrielle
    Inscrit en
    Avril 2006
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur informatique industrielle
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 406
    Points : 616
    Points
    616
    Par défaut
    Citation Envoyé par magelan Voir le message
    Bonjour,

    Je suis tombé sur ceci dans lequel on peut lire notamment :
    Yep !
    si je déclare la classe comme ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    classdef destr < handle
    le destructeur est appelé comme il faut

    merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 08/08/2011, 17h43
  2. Réponses: 11
    Dernier message: 21/06/2005, 10h16
  3. Réponses: 24
    Dernier message: 10/06/2005, 10h11
  4. Destructeur et wxWidgets
    Par elvivo dans le forum wxWidgets
    Réponses: 3
    Dernier message: 11/05/2005, 15h44
  5. destructeur et vector
    Par diefo dans le forum SL & STL
    Réponses: 14
    Dernier message: 02/03/2005, 12h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo