Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Ecovacs DEEBOT T90 PRO OMNI: ora il rullo di lavaggio è ampio
Ecovacs DEEBOT T90 PRO OMNI: ora il rullo di lavaggio è ampio
DEEBOT T90 PRO OMNI abbina un sistema di aspirazione basato su tecnologia BLAST ad un rullo di lavaggio dei pavimenti dalla larghezza elevata, capace di trattare al meglio le superfici di casa minimizzando i tempi di lavoro. Un robot completo che riesce anche ad essere sottile e garantire automazione ed efficienza nelle operazioni di pulizia di casa
Recensione Samsung Galaxy S26 Ultra: finalmente qualcosa di nuovo
Recensione Samsung Galaxy S26 Ultra: finalmente qualcosa di nuovo
Per diversi giorni il Galaxy S26 Ultra di Samsung è stato il nostro compagno di vita. Oltre alle conferme del colosso coreano come la qualità del display e una suite AI senza rivali, arriva il Privacy Display, un unicum nel mondo smartphone. Ci sono ancora alcuni gap che non sono riusciti a colmare lato batteria e fotocamera, seppur con alcuni miglioramenti.
Diablo II Resurrected: il nuovo DLC Reign of the Warlock
Diablo II Resurrected: il nuovo DLC Reign of the Warlock
Abbiamo provato per voi il nuovo DLC lanciato a sorpresa da Blizzard per Diablo II: Resurrected e quella che segue è una disamina dei nuovi contenuti che abbiamo avuto modo di sperimentare nel corso delle nostre sessioni di gioco, con particolare riguardo per la nuova classe dello Stregone
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 29-10-2008, 18:21   #1
alex05
Member
 
Iscritto dal: Mar 2006
Messaggi: 47
[OVELOADING DEGLI OPERATORI/C++] operator =

Ciao a tutti,
sto studiando l'overloading degli operatori in C++.... e ho letto che l'overloding dell'operator = non si può fare con tecniche friend. ok! perchè?

Grazie per l'aiuto

Ultima modifica di alex05 : 29-10-2008 alle 19:55.
alex05 è offline   Rispondi citando il messaggio o parte di esso
Old 30-10-2008, 18:07   #2
alex05
Member
 
Iscritto dal: Mar 2006
Messaggi: 47
Nessuno sa dirmi il perchè?
alex05 è offline   Rispondi citando il messaggio o parte di esso
Old 30-10-2008, 19:12   #3
incipit1970
Member
 
Iscritto dal: Mar 2007
Messaggi: 298
Quote:
Originariamente inviato da alex05 Guarda i messaggi
Ciao a tutti,
sto studiando l'overloading degli operatori in C++.... e ho letto che l'overloding dell'operator = non si può fare con tecniche friend. ok! perchè?

Grazie per l'aiuto
Come dici, gli operatori =, () e [] (e se non ricordo male anche ->) possono essere implementati solo in funzioni membro della classe (non possono essere nemmeno static).

Gli operatori definiti come membri della classe operano sul valore "this" implicito, che non viene specificato nella lista di parametri. Gli operatori friend d'altra parte sono esterni alla classe e tutti i loro parametri devono essere espliciti. Infatti, per ridefinire l'operatore +, se è membro devi fare: "operator +(valore)", che si traduce in "this + valore", mentre lo stesso operatore come friend deve avere i due argomenti: "operator +(valore1, valore2)", che si traduce in "valore1 + valore2". Nel secondo caso, non c'è il this implicito.

Il problema degli operatori =, () e [] è che richiedono, per funzionare correttamente, un "lvalue", ovvero, puoi assegnare un literale ad una variabile, ma non l'opposto (puoi fare x = 1, ma non 1 = x). Quindi, il lato sinistro di una eguaglianza ha alcune limitazioni (dev'essere una variabile, e dunque un istanza della classe che ridefinisce l'operatore, altrimenti non puoi fare un'assegnazione). Pertanto, non puoi usare un operatore friend perché questo operatore non impone limitazioni su quale dev'essere il lato sinistro dell'assegnazione, mentre l'operatore membro si (dev'essere this).

Per lo stesso motivo non possono essere static (implicherebbe che potrebbero essere usati anche in assenza di una istanza, e quindi non ci sarebbe un lvalue valido).

Forse ho fatto un po' di confusione con la risposta, se hai dubbi chiedi pure...
incipit1970 è offline   Rispondi citando il messaggio o parte di esso
Old 31-10-2008, 08:11   #4
alex05
Member
 
Iscritto dal: Mar 2006
Messaggi: 47
Ok!! Grazie per la risposta... se ho altri dubbi scrivo;
alex05 è offline   Rispondi citando il messaggio o parte di esso
Old 01-11-2008, 11:48   #5
alex05
Member
 
Iscritto dal: Mar 2006
Messaggi: 47
Anche gli operatori () [] e -> non possono essere friend... per lo stesso motivo dell'operatore =? giusto?

Mi faresti degli esempi, per favore?

ALTRO ARGOMENTO:
Ho provato a fare un costruttore di copie nel caso in cui una funzione mi deve restituire un oggetto temporaneo, ma inspiegabilmente non mi funziona... qualche idea o suggerimento?

I casi in cui bisogna utilizzare il costruttore di copie sono 3:
1- Inizializzazione di un oggetto con un altro oggetto.
2- Passaggio di un oggetto ad una funzione per valore.
3- Restituzione di un oggetto temporaneo da una funzione.

ESEMPI:
1°CASO: miaclasse m=m1;
2°CASO: funzione(m);
3°CASO: m=funzione(); //Ovviamente le funzioni possono anche essere membri della classe!!!

ALTRO ARGOMENTO:
Mi fareste un esempio semplice del puntatore a funzione e del suo funzionamento in memoria?

Grazie anticipatamente a tutti(L'esame si avvicina.... Help....)

Ultima modifica di alex05 : 05-11-2008 alle 11:51.
alex05 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Ecovacs DEEBOT T90 PRO OMNI: ora il rullo di lavaggio è ampio Ecovacs DEEBOT T90 PRO OMNI: ora il rullo di lav...
Recensione Samsung Galaxy S26 Ultra: finalmente qualcosa di nuovo Recensione Samsung Galaxy S26 Ultra: finalmente ...
Diablo II Resurrected: il nuovo DLC Reign of the Warlock Diablo II Resurrected: il nuovo DLC Reign of the...
Deep Tech Revolution: così Area Science Park apre i laboratori alle startup Deep Tech Revolution: così Area Science P...
HP OMEN MAX 16 con RTX 5080: potenza da desktop replacement a prezzo competitivo HP OMEN MAX 16 con RTX 5080: potenza da desktop ...
NVIDIA porta l'AI nello spazio: presenta...
NVIDIA Vera: la CPU per l'AI agentica pr...
Dell rinnova la sua gamma di workstation...
NVIDIA DLSS 5 arriverà in autunno...
Intel Xeon 6 con P-core è la CPU ...
Telepass e TIM: la mobilità integ...
Deep Tech Revolution: le cinque startup ...
Leapmotor, sostenuta da Stellantis, ragg...
Isar Aerospace e Astroscale stringono un...
Donut Lab, test di ricarica con Verge TS...
Polestar, arriva un nuovo finanziamento ...
Friggitrice ad aria, tutto quello che de...
BYD lancia la nuova campagna per il bran...
Samsung Galaxy Book4 in offerta: portati...
HONOR MagicPad 4: più sottile, pi...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 23:13.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v