Overloading Operators - C ++

0

Stavo sperimentando nuovi operatori sovraccaricati, ho creato un operatore vuoto e un altro che restituisce qualcosa quando viene chiamato:

#include <iostream>

struct chichachicha{
    int operator()(){
        return 25;
    };
};

struct boomboom{
    void operator()() {
        std::cout << "Hi folks!" << std::endl;
    };
};

int main(){
    chichachicha objC;
    int f = objC();
    std::cout << f << std::endl;
    boomboom objB;
    objB();
    return(0);
}

È questo il modo migliore per scrivere un codice che lo faccia?

Come posso scrivere un operatore che può essere chiamato da qualsiasi parte del codice senza creare un'istanza della struttura associata, che restituisce void / nothing e stampa solo una stringa di testo? Non sto considerando metodi statici, solo operatori.

    
posta user827992 16.08.2012 - 05:31
fonte

1 risposta

4

Nonostante " non sto considerando i metodi statici, solo gli operatori ", la frase immediatamente prima suggerisce che stai chiedendo una operator() statica. Se ciò fosse possibile, la analisi più irritante sarebbe molto più irritante!

Dopo un'ulteriore ispezione, si legge come se foste fondamentalmente nel mercato per una funzione statica. Lo scopo di operator() è di creare un functor. Se vuoi una versione polimorfa di operator() , temo che dovrai istanziare qualcosa da qualche parte.

    
risposta data 16.08.2012 - 06:37
fonte

Leggi altre domande sui tag