Articles of sovraccarico dell’operatore

Motivazione di far rispettare alcuni operatori per essere membri

Ci sono 4 operatori in C ++ che possono essere sovraccaricati ma non possono essere sovraccaricati come funzioni indipendenti (anche non membri, standalone). Questi operatori sono: operator = operator () operator -> operator [] Questo thread spiega perfettamente la logica alla base del divieto operator = di essere una funzione non membro. Qualche idea sugli […]

Come posso ottenere in modo affidabile l’indirizzo di un object quando l’operatore è sovraccarico?

Considera il seguente programma: struct ghost { // ghosts like to pretend that they don’t exist ghost* operator&() const volatile { return 0; } }; int main() { ghost clyde; ghost* clydes_address = &clyde; // darn; that’s not clyde’s address :'( } Come posso ottenere l’indirizzo di clyde ? Sto cercando una soluzione che funzionerà […]

Come sovraccaricare l’operatore ++ in due modi diversi per postfix a ++ e prefisso ++ a?

Come sovraccaricare l’operatore ++ in due modi diversi per postfix a++ e prefisso ++a ?

Perché l’object istream può essere usato come espressione bool?

Qualcuno sa perché l’object istream può essere usato come espressione bool? Per esempio: ifstream input(“tmp”); int iValue; while (input >> iValue) //do something; Qui input >> iValue restituisce un riferimento all’object ifstream. Voglio sapere perché questo object può essere usato come espressione bool. Guardo nella class ifstream e scopro che ciò potrebbe essere dovuto alla […]

Sovraccarico dell’operatore in C

Sto cercando di sovraccaricare alcuni operatori: /* Typedef is required for operators */ typedef int Colour; /* Operators */ Colour operator+(Colour colour1, Colour colour2); Colour operator-(Colour colour1, Colour colour2); Colour operator*(Colour colour1, Colour colour2); Colour operator/(Colour colour1, Colour colour2); Ottengo questo errore per ogni sovraccarico provato: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘+’ […]

Perché sostituire l’operatore ()?

Nella libreria Boost Signals , stanno sovraccaricando l’operatore (). È una convenzione in C ++? Per richiamate, ecc.? Ho visto questo nel codice di un collega (che sembra essere un grande fan di Boost). Di tutta la bontà della bontà, questo ha portato solo a confusione per me. Qualche idea sul motivo di questo sovraccarico?

Perché non riesci a sovraccaricare il ‘.’ operatore in C ++?

Sarebbe molto utile essere in grado di sovraccaricare il. operatore in C ++ e restituisce un riferimento a un object. È ansible sovraccaricare l’ operator-> e l’ operator* ma non l’ operator. C’è una ragione tecnica per questo?

Qual è il modo giusto per sovraccaricare l’operatore == per una gerarchia di classi?

Supponiamo che abbia la seguente gerarchia di classi: class A { int foo; virtual ~A() = 0; }; A::~A() {} class B : public A { int bar; }; class C : public A { int baz; }; Qual è il modo giusto per sovraccaricare l’ operator== per queste classi? Se faccio loro tutte le […]

Come codificare un operatore di modulo (%) in C / C ++ / Obj-C che gestisce numeri negativi

Uno dei miei animali odia le lingue derivate dalla C (come matematico) (-1) % 8 // comes out as -1, and not 7 fmodf(-1,8) // fails similarly Qual è la soluzione migliore? Il C ++ consente la possibilità di modelli e sovraccarico dell’operatore, ma entrambi sono acque torbide per me. esempi ricevuti con gratitudine.

operatore di assegnazione virtuale C ++

L’operatore di assegnazione in C ++ può essere reso virtuale. Perché è richiesto? Possiamo rendere virtuali anche altri operatori?