Newsgroup: it.comp.lang.c++
Titolo: quesiti sul costruttore

    
ma come li passo due argomenti?
Scusate se la domanda vi sembrerà un pò pazzoide m ane questo testo ne 
"thinking in c++" non mi pare chiariscano questo problema.
Ciao e grazie
Alessia

 ela creazione degli oggetti vadano al parametro giusto?
E' una funzione come le altre, quindi gli passi la coppia di parametri 
visto che prende due parametri...si sequenzializzano con la virgola come 
nel 99% dei linguaggi di programmazione. Non mi dirai che questo è il 
tuo primo linguaggio di programmazione?
ciao

 
Ni nel senso che anni fa ho studiato il Pascal e anni prima il Basic. 
Che però sono piuttosto diversi
ciao


Bhe però se hai studiato il pascal seriamente dovresti sapere come si 
passano due parametri ad una funzione...
Ma stai seguendo un corso universitario che parte dal C++?
ciao

 Certamente.
Meglio sempre sapere cosa si fa. Ad esempio, secondo te questo:
---
#include <iostream>
#include <string>
void println(const std::string& msg)
{ std::cout << msg << '\n'; }
class Base {
public:
   Base()              { println("Base::Base()");  virt(); }
   virtual void virt() { println("Base::virt()"); }
};
class Derived : public Base {
public:
   Derived()           { println("Derived::Derived()");  virt(); }
   virtual void virt() { println("Derived::virt()"); }
};
int main()
{
   Derived d;
   ...
}
---
che cosa produce?
Prova a rispondere prima di guardare l'articolo completo citato qui sotto.
--
Marco
[1] 
http://www.new-brunswick.net/workshop/c++/faq/strange-inheritance.html#faq-23.5

 ciao
L'ho studiato 2 anni al liceo ( classico) come integrazione delle ore di 
matematica. Seriamente forse non è la parola giusta. Tipicamente noi 
creavamo programmi per risolvere le equazioni e gli studi di funzione. A 
quei tempi le finestre non esistevano  ancora:-))
Sapevo che ad una funzione si possono fornire più parametri in effetti 
però, secondo me, mi sono fatta fuorviare dalla parola "speciale" messa 
davanti alla parola  "costruttore" nel libro.
Tra poco dovrei iniziare un corso universitario (una serie di corsi in 
realtà) riguardanti le reti informatiche in cui il linguaggio oggetto di 
insegnamento sarà Java. Tuttavia era consigliato conoscere almeno un po' 
il c++ ( o altro linguaggio similare).
ciao

 
non sono a questo livello, ma molto molto prima, comunque sono riuscita 
a capire che si stampava qualcosa. Però molte cose non le capisco e mi 
sembra anche normale visto che sono veramente agli inizi.
Non ho capito esattamente cosa intendevi dire con la tua risposta. Vuoi 
dire che prima di chiamare una funzione dal costruttore bisogna sapere 
cosa fa quella funzione?
chiaro! Infatti mi pareva di aver capito cosa fanno set e get mentre non 
inserirei una funzione che non so cosa fa.
Se intendevi dire qualcos'altro allora non ho capito....
comunque grazie per la risposta
Alessia

 cosa fa quella funzione?
Anche, ma devi anche sapere se hai finito di costruire quella parte di 
oggetto necessario a quella funzione membro per "funzionare".
Ogni funzione membro lavora su una parte dell'oggetto (alcune variabili 
d'istanza, altre funzioni membro). Il costruttore, d'altra parte, e' il 
momento in cui lo l'oggetto viene "inizializzato", e durante la sua 
esecuzione puo' avere uno stato inconsistente. Per questo, se scegli di 
eseguire una funzione membro, devi avere ben chiaro cosa fa e quali 
parti dell'oggetto debbano essere "pronte" all'uso, non solo da lei, ma 
anche da tutte le funzioni membro che richiama.
Normalmente e' semplice capire se una chiamata si puo' fare o meno, ma 
questo ti lega molto (troppo) l'implementazione della funzione membro a 
quella del costruttore (e quando modifichi uno dei due, devi ricordarti 
di controllare se la chiamata nel costruttore e' ancora valida o meno).
Non volendo essere troppo assoluto, ritengo sia "safe" farlo quando il 
metodo e' "banale" (una funzione membro che ritorna solo una variabile 
d'istanza) e si sa che rimarra' tale per tutta la vita, per i restanti 
casi metterei un commento che spieghi il problema.
--*PaN!*

 Se intendevi dire qualcos'altro allora non ho capito....
No, suppongo intendesse dire che nel caso specifico devi sapere che i 
metodi vengono risolti staticamente all'interno dei costruttori delle 
classi da cui si eredita.
Probabilmente non avrai capito molto di questa frase, ma infatti mi 
chiedo: qual'è il senso di studiare C++ per una persona che conosce solo
male il Pascal e che dovrà studiare Java?
Secondo me stai perdendo tempo. Lo dico senza vene polemiche, ma nel tuo 
interesse...:-) Anzi potrebbe anche essere deleterio passare da uno 
studio superficiale del C++ a Java, perchè potresti essere solo più 
confusa dalla rigidità di quest'ultimo rispetto al primo.
Il punto è che se devi studiare Java è chiaramente meglio se già conosci 
il C++, perchè vuol dire che probabilmente conosci la programmazione ad 
oggetti. Ma per studiare Java è ancora meglio se conosci già Java...non 
so se intuisci il senso della frase...
ciao