Newsgroup: it.comp.lang.c++
Titolo: Informazioni tanto basilari quanto difficilii da trovare con una ricerca in rete:)

Ciao a tutti:)
Lavoro ormai da svariati anni in C, sfruttando solo in minima parte le 
estensioni importate al linguaggio dal c++.
Sto iniziando ad approfondire l'argomento....ma ho ancora qualke dubbio al 
quale non sono riuscito a dare risposta.
1) Se ho una classe:
class classe1;
ed un riferimento ad essa:
classe1& riferimento;
ora, se faccio:
classe1 A;
riferimento = A;
i puntatori &A e &riferimento puntano alla stessa area di memoria???
2)se ho due classi:
class classe1;
class classe2 : public classe1;
e una funzione:
void quellochevuoi(classe1 valore);
posso anche passargli un parametro di tipo classe2 essendone una derivata??
3)Ho bisogno di avere le migliori prestazioni possibili, pensavo quindi di 
dichiarare pubblici alcuni valori interni ad una classe, soluzione che, a 
voler fare i "puristi", risulta sporca:
class Vertex
{
public:
    float    x, y, z;
}
cosa mi consigliate di fare? Sono l'unico a credere che un accesso diretto 
alle variabili di una classe sia (quando necessario) più veloce e quindi più 
"prestante", o dovrei comunque passare per metodi?
Grazie:) 

 "prestante", o dovrei comunque passare per metodi?
struct { float x,y,z; };
Comunque, se i get/set sono banali, il compilatore te li considera
inline e quindi hai lo stesso risultato, solo che hai scritto il
quadruplo del codice.
Certo, se per esempio avessi un altro campo (variabili della classe)
tipo d come "distanza da (0,0,0)" allora avrebbe senso fare un metodo
che ad ogni set ricalcoli la distanza, tanto per spiegare il concetto.
Oppure fatti i membri privati e facci accedere solo i friend.
Se posso permettermi, guarda qui:
 
http://www.parashift.com/c++-faq-lite/
Saluti
-- 
alef

Grazie mille alef :) 

Comunque, per quel che riguarda i puntatori a riferimenti....
purtroppo ne ho bisogno perchè dovrei cancellare della memoria da una 
funzione:
void cancella(Vettore& vett)
{
    if(è tutto a posto)    delete &vett;
}
non posso quindi limitarmi all'utilizzo del riferimento ma devo utilizzarne 
il puntatore, e se questo non dovesse indirizzare alla memoria utilizzata 
"realmente" dal parametro, non potrei deallocarne lo spazio riservato.
per quel che riguarda invece la classe "Vettore"....
il dichiararla come classe, piuttosto che come typedef, mi serve per poterne 
poi dichiarare metodi che siano strettamente legati alle variabili stesse, 
piuttosto che passare per delle funzioni esterne.
Grazie cmq:) 

 "prestante", o dovrei comunque passare per metodi?
Le prestazioni non si "credono", si misurano.
Ciao,
Nicola

 piuttosto che passare per delle funzioni esterne.
Eh?
Saluti
-- 
alef

 riferimento = B;
Forse mi sfugge qualcosa: stai assegnando un riferimento?
EMG
--
EMAG Software Homepage:     
http://www.emagsoftware.it
The EMG's ZX-Spectrum Page: 
http://www.emagsoftware.it/spectrum
The Best of Spectrum Games: 
http://www.emagsoftware.it/tbosg

 Eh?
Nell' esempio iniziale non avevo precisato i metodi, cmq, intendevo dire che 
l'utilizzo di un typedef implicherebbe l'utilizzo di funzioni "esterne" per 
lavorare sul tipo di dato.
A me interessa invece utilizzare dei metodi interni alla classa, nonostante 
i valori siano pubblici.
ciao, CC:) 

 Nicola
miiiiiiiiiiiiiiiiiiiiiiiii.........ma sei pignolo:PPPPPP
ciao, CC:) 

 Forse mi sfugge qualcosa: stai assegnando un riferimento?
No assegno il valore di B all'oggetto riferito da riferimento, ovvero A.
Ciao,
Nicola

 miiiiiiiiiiiiiiiiiiiiiiiii.........ma sei pignolo:PPPPPP
Scommetto che lo dici sempre anche al tuo compilatore :-P
Ciao,
Nicola

 No assegno il valore di B all'oggetto riferito da riferimento, ovvero A.
...e si vede. :-) Scusa...



si:)
ma solo quando compilo con l'opzione /W4.  :P
Ciao, CC.