Torna indietro   Hardware Upgrade Forum > Software > Programmazione

BOOX Picco: l'ebook reader minuscolo è una genialata, e si può attaccare allo smartphone
BOOX Picco: l'ebook reader minuscolo è una genialata, e si può attaccare allo smartphone
BOOX ha portato sul mercato Picco, un e-reader da 3,97 pollici che pesa 58 grammi e si aggancia al retro dello smartphone con un anello magnetico. Lo abbiamo usato con Pixel 11 Pro XL e iPhone 18 Pro per capire se un formato così ridotto regga la prova della lettura quotidiana
AMD EPYC Venice: dentro Zen 6, i SoC a 256 core e la sfida al costo della memoria
AMD EPYC Venice: dentro Zen 6, i SoC a 256 core e la sfida al costo della memoria
A Las Vegas AMD ha svelato i dettagli architetturali delle CPU EPYC di sesta generazione, note con il nome in codice Venice. Nuovi core Zen 6 e Zen 6c costruiti a 2 nanometri, fino a 256 core per socket, 16 canali di memoria, interfaccia PCI Express 6.0 e un'intera famiglia di proposte che va da Venice SP7 a Verano. Senza dimenticare la memoria, oggi la voce di costo più pesante in un server: AMD risponde con CXL 3.1 e con la tecnologia software MEXT, che porta la memoria flash dentro la gerarchia della DRAM.
HONOR Pad X9 Max recensione, schermo ultra large a meno di 400 euro
HONOR Pad X9 Max recensione, schermo ultra large a meno di 400 euro
HONOR Pad X9 Max mette un pannello IPS da 13 pollici con risoluzione 2,5K e refresh a 120 Hz davanti a una batteria da 10.100 mAh e a quattro altoparlanti. Il listino parte da 399,90 euro, per un progetto molto chiaro e ambizioso: schermo ampio, buon audio e giornate lontano dalla presa, a un prezzo che non pesa sul portafoglio
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 27-11-2008, 14:20   #1
apocaliv
Member
 
L'Avatar di apocaliv
 
Iscritto dal: Nov 2004
Messaggi: 213
[C++] Dubbio classe

Salve,
sto seguendo una guida al C++ e ho un dubbio ovviamente sulle classi!!
Praticamente dopo aver letto una guida volevo sapere se una cosa del genere è possibile, l'ho provata ma mi da errore. So che è inutile fare una cosa del genere ma è per capire se si può fare. Poi si può usare invece di calcolo.aria, senza dichirare calcolo, usare Matematica::aria()??? Cmq questo mi da errore di compilazione, "main must return int", "new type can't be definied", "extraneous int ignored". Non capisco il problema forse perchè non ho capito le classi come funzionano!

Codice:
#include <iostream>
using namespace std;
class Matematica
{
    public:
    int aria(int x, int y)
    {
        int risultato=x*y;
        return risultato;
    }
}
int main()
{
    Matematica calcolo;
    cout << "Il totale e' " << calcolo.aria(5,6);
    return 0;
}

Fatemi sapere.
Bye
apocaliv è offline   Rispondi citando il messaggio o parte di esso
Old 27-11-2008, 14:51   #2
||ElChE||88
Senior Member
 
Iscritto dal: Dec 2003
Messaggi: 4908
Hai dimenticato il ; dopo la dichiarazione della classe:
Codice:
class Matematica
{
    public:
    int aria(int x, int y)
    {
        int risultato=x*y;
        return risultato;
    }
};
||ElChE||88 è offline   Rispondi citando il messaggio o parte di esso
Old 27-11-2008, 15:54   #3
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Poi direi area e non aria
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 27-11-2008, 17:13   #4
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
scusate l'intromissione

Ma in C++ non serve il 'new' per inizializzare le classi ?


Grazie

RaouL.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 27-11-2008, 17:17   #5
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Non necessariamente, dipende se vuoi creare una variabile allocata staticamente (la cui vita comincia dal punto in cui è dichiarata fino alla fine del blocco) o una variabile allocata dinamicamente (con la new).
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 27-11-2008, 17:35   #6
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
Ah, quindi non è come generalmente avviene per altri linguaggi in cui è necessario dichiarare esplicitamente se la classe sia statica ?

E, (chiedo scusa ancora all'autore per il prolungarsi del mio OT) avviene solo in C++ managed o anche nella versione 'tradizionale' ?

Grazie ancora.

RaouL.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 27-11-2008, 17:45   #7
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quello che ti ho riferito è relativo al C++ normale, il C++ managed non lo conosco.
No, dire che la classe è statica è una cosa dire che una variabile è allocata staticamente è un'altra.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 27-11-2008, 17:51   #8
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
Scusami ancora

quello che non capisco è:

Codice:
Matematica (classe) calcolo (oggetto) ;
il dubbio che ho non vedendo: 'static Class Matematica' è:

Codice:
Matematica calcolo = new Matematica();
??

Grazie mille.

RaouL.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 27-11-2008, 18:27   #9
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
No, non è la stessa cosa. La parola chiave static esiste anche in C++.
Un oggetto in C++ è allocato staticamente quando occupa una posizione di memoria predefinita (rispetto al registro che punta alla base dello stack) e non modificabile. Per memorizzare queste variabili si usa lo stack. Lo scope di questa variabile è dalla posizione di dichiarazione fino alla fine del blocco corrispondente. Il tempo di vita è da quando viene eseguito il prologo della funzione/metodo/oggetto, fino alla fine della funzione/metodo o alla distruzione dell'oggetto.

Matematica calcolo;


Un oggetto è allocato dinamicamente quando si fa uso di new per riservare una zona di memoria (nello heap) dedicata a contenere l'oggetto. La new ritorna l'indirizzo della locazione di memoria riservata che deve essere contenuto all'interno di un puntatore. Lo scope si ottiene attraverso il puntatore "calcolo", la variabile è raggiungibile anche dopo la terminazione della funzione/metodo a patto che rimanga un riferimento al puntatore (ritornato dalla funzione/metodo, immagazzinato nei membri della classe o in un parametro della funzione/metodo passato per riferimento o indirizzo). Il tempo di vita è dalla new fino a quando non richiamo una delete esplicita.

Matematica * calcolo = new Matematica();
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 27-11-2008, 19:16   #10
javaboy
Registered User
 
Iscritto dal: May 2005
Città: far away from home
Messaggi: 1038
Quote:
Originariamente inviato da cionci Guarda i messaggi
No, non è la stessa cosa. La parola chiave static esiste anche in C++.
Un oggetto in C++ è allocato staticamente quando occupa una posizione di memoria predefinita (rispetto al registro che punta alla base dello stack) e non modificabile. Per memorizzare queste variabili si usa lo stack. Lo scope di questa variabile è dalla posizione di dichiarazione fino alla fine del blocco corrispondente. Il tempo di vita è da quando viene eseguito il prologo della funzione/metodo/oggetto, fino alla fine della funzione/metodo o alla distruzione dell'oggetto.
Scusa me le variabili memorizzate nello stack non sono variabili automatiche?
come questa x ad esempio:
void fun(){
int x;
}

Le variabili statiche:
void fun(){
static int x;
}
durano oltre la fine della funzione.

Oppure è corretto usare il termine allocato staticamente per tutto ciò che non è allocato dinamicamente con new/malloc come ad esempio le variabili automatiche e le variabili globali?

Ultima modifica di javaboy : 27-11-2008 alle 19:21.
javaboy è offline   Rispondi citando il messaggio o parte di esso
Old 27-11-2008, 19:25   #11
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
C'è differenza fra dire variabile statica e variabile allocata staticamente.
In C++ (e in C) esistono due tipi di allocazione, statica e dinamica.
Le variabili allocate staticamente sono variabili automatiche.
Quelle allocate dinamicamente non sono automatiche, o meglio è automatico l'eventuale puntatore che le indirizza se è allocato staticamente.

Codice:
int * pippo()
{
   int * pluto = new int();
   return pluto;
}
Il puntatore pluto è allocato staticamente ed è automatico. L'indirizzo puntato da pluto contiene memoria allocata dinamicamente.

Codice:
void pluto()
{
   static int a;
   ...
}
a è una variabile statica ed è allocata al momento della creazione dell'immagine in memoria del programma.

Codice:
void pluto()
{
   int a;
   ...
}
a è una variabile allocata staticamente e automatica.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 27-11-2008, 19:30   #12
javaboy
Registered User
 
Iscritto dal: May 2005
Città: far away from home
Messaggi: 1038
Quote:
Originariamente inviato da cionci Guarda i messaggi
C'è differenza fra dire variabile statica e variabile allocata staticamente.
In C++ (e in C) esistono due tipi di allocazione, statica e dinamica.
Le variabili allocate staticamente sono variabili automatiche.
Quelle allocate dinamicamente non sono automatiche, o meglio è automatico l'eventuale puntatore che le indirizza se è allocato staticamente.

Codice:
int * pippo()
{
   int * pluto = new int();
   return pluto;
}
Il puntatore pluto è allocato staticamente ed è automatico. L'indirizzo puntato da pluto contiene memoria allocata dinamicamente.

Codice:
void pluto()
{
   static int a;
   ...
}
a è una variabile statica ed è allocata al momento della creazione dell'immagine in memoria del programma.

Codice:
void pluto()
{
   int a;
   ...
}
a è una variabile allocata staticamente e automatica.
Ho ancora un dubbio.
Tu dici che le variabili allocate staticamente sono automatiche.

void fun(){
static int x;
}

Questa è automatica? Una variabile globale è automatica?
javaboy è offline   Rispondi citando il messaggio o parte di esso
Old 27-11-2008, 19:35   #13
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Sono automatiche, solo la loro vita dura dall'inizio alla fine del programma
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 27-11-2008, 19:49   #14
javaboy
Registered User
 
Iscritto dal: May 2005
Città: far away from home
Messaggi: 1038
Lo stroustrup distingue 3 tipi di memoria:
Memoria statica:un oggetto è allocato dal collegatore per la durata del programma....

Memoria automatica:argomenti delle funzioni e variabili locali.

Memoria dinamica:nella quale il programma alloca.....
javaboy è offline   Rispondi citando il messaggio o parte di esso
Old 27-11-2008, 20:07   #15
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Ok, ma sono termini, non si è mai sentito dire: alloco un vettore in modo automatico...invece si è sempre sentito dire alloco un vettore in modo statico (e non in riferimento a static). E di persone che mi hanno parlato di C e C++ in 19 anni ne ho viste, professori inclusi.
La terminologia di fatto ed in italiano è questa indipendentemente da Stroustrup.
Nota inoltre che io ho fatto sempre uso del termine "allocazione/allocata" e non memoria. Una variabile automatica è allocata in modo statico. Per me non fa una grinza

Come per la definizione di variabile automatica: cioè una variabile visibile dal punto di dichiarazione e distrutta senza l'intervento diretto del programmatore. Per me anche le variabili globali sono automatiche. E ripeto non sto parlando di memoria.

Ultima modifica di cionci : 27-11-2008 alle 20:12.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 27-11-2008, 20:18   #16
javaboy
Registered User
 
Iscritto dal: May 2005
Città: far away from home
Messaggi: 1038
Quote:
Originariamente inviato da cionci Guarda i messaggi
Ok, ma sono termini, non si è mai sentito dire: alloco un vettore in modo automatico...invece si è sempre sentito dire alloco un vettore in modo statico (e non in riferimento a static). E di persone che mi hanno parlato di C e C++ in 19 anni ne ho viste, professori inclusi.
La terminologia di fatto ed in italiano è questa indipendentemente da Stroustrup.
Nota inoltre che io ho fatto sempre uso del termine "allocazione/allocata" e non memoria. Una variabile automatica è allocata in modo statico. Per me non fa una grinza

Come per la definizione di variabile automatica: cioè una variabile visibile dal punto di dichiarazione e distrutta senza l'intervento diretto del programmatore. Per me anche le variabili globali sono automatiche. E ripeto non sto parlando di memoria.
Ok, l'importante è capirsi. Io ero abituato alla notazione "stroustrup" e mi son messo in allarme. Lavori come programmatore c++? Se si in che settore?
javaboy è offline   Rispondi citando il messaggio o parte di esso
Old 27-11-2008, 20:21   #17
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Diciamo che ci ho lavorato Attualmente sono in una fase di transizione
Più che altro ho iniziato molto presto. Il K&R l'ho cominciato a studiare a 12 anni.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 27-11-2008, 23:38   #18
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Quote:
Originariamente inviato da cionci Guarda i messaggi
Poi direi area e non aria
In effetti...
Quote:
Originariamente inviato da cionci Guarda i messaggi
Il K&R l'ho cominciato a studiare a 12 anni.
Che precocia!
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


BOOX Picco: l'ebook reader minuscolo è una genialata, e si può attaccare allo smartphone BOOX Picco: l'ebook reader minuscolo è un...
AMD EPYC Venice: dentro Zen 6, i SoC a 256 core e la sfida al costo della memoria AMD EPYC Venice: dentro Zen 6, i SoC a 256 core ...
HONOR Pad X9 Max recensione, schermo ultra large a meno di 400 euro HONOR Pad X9 Max recensione, schermo ultra large...
Lenovo ThinkPad X1 Carbon Gen 14: il business ultraleggero si rinnova dall’interno Lenovo ThinkPad X1 Carbon Gen 14: il business ul...
Jabra Evolve3 85: le cuffie sia per l'intrattenimento che per il lavoro Jabra Evolve3 85: le cuffie sia per l'intratteni...
Programma NOM4D: Caltech e DARPA hanno r...
La missione ESA Hera inizia l'analisi de...
SpaceX e Singulus: stretto un accordo pe...
Binance avvisa: un bug di iOS mette a ri...
Apple corregge 9 vulnerabilità su iPhone...
Microsoft inaugura il Pavilion a Roma, c...
Black Friday, l'errore che può co...
Lotus avrà un V8 ibrido da 670 CV...
IBM: solo il 26% delle imprese dimostra ...
Hacker contro hacker e danni per 740.000...
Xiaomi SkyNomad, boom da 27.147 auto in ...
Logitech concede un giorno di ferie ai s...
Amazon, questi mini PC hanno un display ...
BYD prepara una rivale di smart #2? Il b...
Amazon, 3 robot tagliaerba ECOVACS GOAT ...
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: 01:35.


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