Newsgroup: it.comp.lang.c++
Titolo: Dubbio heap o stack

Data la classe
class MyClass
{
    char stringa[100];
}
quando dichiaro
MyClass *mc=new MyClass(this);
la variabile stringa va a finire nello heap o nello stack?
grazie
-- 
Ciao
Franco

 la variabile stringa va a finire nello heap o nello stack?
nello heap.
Tommaso
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 MyClass *mc=new MyClass;
perche'?
-- 
Devaraja (Xdevaraja87^gmail^c0mX)
Linux Registerd User #338167
http://counter.li.org

> MyClass *mc=new MyClass;
Tommaso

 
Non so che programmi tu faccia, ma a me capita spesso di passare dei 
parametri al costruttore.
Tra tali parametri compare anche la classe della funzione chiamante
es.
TuaClasse::chiamaMyClass()
{	
	MyClass *mc=new MyClass(this);
}
-- 
Ciao
Franco

Ovviamente esiste un costruttore
MyClass(TuaClasse *parent)
{
}
 
-- 
Ciao
Franco

 a me capita spesso di passare dei  parametri al costruttore.
anche a me capita spesso di passare dei parametri al costruttore, nessuno ha 
mai messo in dubbio questo ;-)
Tommaso

 }
Ovviamente NON esiste in quanto la definizione della classe e':
class MyClass
{
      char stringa[100];
};
Tommaso

mi pare che il discorso sia stato confuso da un equivoco di fondo.
Il THIS passato a un costruttore non può naturalmente essere il 
puntatore all'istanza stessa costruenda.
Se però il costruttore viene invocato da dentro un'istanza di 
uan classe diversa (ovviamente deve esistere un costruttore che 
prenda come parametro un puntatore ad istanza di tale secondo 
tipo), allora la chiamata con this come paramentro è legittimo, 
ma è un this di tipo differente e che non ha rapporti né col 
tipo né con la specifica istanza dell'oggetto costruendo.
Chiarito ciò .... qual'è il dilemma ? Cosa mi sfugge ?
ciao
perplesso, Soviet_Mario


>
Quindi penso che sia stata la dichiarazione:
 > MyClass *mc=new MyClass(this);
a insospettirlo, dato che non c'è alcun riferimento a questo tipo di 
costruttore nella definizione della classe.
Ciao

 considera la definizione della classe di Franco:
capito ... avevo dato per sottinteso un copia incolla selettivo 
della definizione della classe. Evidentemente con tale scarna 
definizione, esiste solo il default constructor senza nessun 
argomento, e in tal caso la chiamata non funge, su questo sono 
d'accordo.
ciao
Soviet-mario


 considera la definizione della classe di Franco:
Esatto. Pensavo di essere stato chiaro, ma evidentemente vivere in
inghilterra sta peggiorando il mio italiano piu' del previsto ;-)
Grazie,


 
Facile. Basta aggiungere:
 #define MyClass(X) MyClass
:)
Max

 Grazie,
Non e' l'italiano, forse un pignoleria all'inglese
avrei dovuto scrivere la classe completa del costruttore
class MyClass
{
  char stringa[100];
 
  MyClass(TuaClasse *parent);
};
oppure
class MyClass
{
  char stringa[100];
 
  ......
  ......
};
per poter scrivere


 avrei dovuto scrivere la classe completa del costruttore
Diciamo piuttosto che vivendo in Inghilterra Tommaso si e' forse
dimenticato di una certa faciloneria che purtroppo contraddistingue
spesso noi italiani...
Se scrivi una cosa diversa da quella che intendi gli altri capiranno
cio' che hai scritto, non cio' che intendevi. Non presupporre
l'esistenza di cose che non si vedono e' uno strumento logico
fondamentale, che gli anglosassoni hanno piu' o meno innato e che a noi
italiani di solito manca.
Ciao,
Nicola
P.S. Scusa la "decisione" del messaggio. Di fronte alla mancanza di
rigore (informatico) non riesco a non inalberarmi...