Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565

    Funzione in una funzione

    Piccolo dubbio del C++
    Sappiamo che permette gli overloading degli operatori.
    Mettiamo caso ho una struct chiamata Mtr e ho fatto una funzione che permette di moltiplicarla ad un'altra. questa può essere usata cosi.
    codice:
    Mtr C;
    C.x = 2;
    C.y = "Salve";
    //altri valori...
    
    Mtr B;
    Mtr.x = 10;
    Mtr.y = "Giorno";
    //altri valori
    
    Mtr A = MulMtr(&B,&C);
    Come potete vedere questa funzione effettua una moltiplicazione e memorizza in A.
    Mettiamo caso io implementi un overloading di operatore.

    codice:
    struct Mtr
    [
    //dati membro
    Mtr operator* (Mtr y)
    [
      return MulMtr(this,&y);
    ]
    ];
    Per ottimizzare al massimo le prestazioni, sarà meglio usare
    Mtr A = MulMtr(&B,&C);
    oppure
    Mtr A = B * C;

    Io credo sia meglio la prima poichè con l'overloading dell'operatore vado ad allocare due funzioni, no?
    Thank you!
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Lo scopo dell'operatore e' quello di svolgere le operazioni all'interno dell'overload ... quindi, per avere l'optimum, dovresti scrivere il codice che c'e' nella MulMtr in operator*

  3. #3
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565
    Quindi utilizzare l'overloading, se strutturato in quel modo fa perdere tempo.
    Volevo sapere perchè questa operazione è fatta da DirectX nella moltiplicazione delle matrici.
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Perche' ... tu hai i sorgenti di DirectX?

  5. #5
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565
    No, ma dato che queste sono usabili sia in C che in C++, decide in fase di compilazione se abilitarti o no determinate cose (come l'overloading degli operatori e altro), e tutto ciò è visibile nei file include.
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Beh ... questo mi sembra un buon motivo per operare in quel modo ...

    Ma se il tuo codice deve girare solamente in C++ ...

  7. #7
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565
    Bhe lo so ma non ci vuole molto a sostituire le moltiplicazioni con una chiamata di funzione.
    Grazie mille.
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.