Torna indietro   Hardware Upgrade Forum > Software > Programmazione

ASUS ProArt GoPro Edition è il notebook compatto per chi crea
ASUS ProArt GoPro Edition è il notebook compatto per chi crea
Un notebook sviluppato in collaborazione con GoPro ma che risponde al meglio alle necessità di tutti coloro che creano contenuti video: robustezza, design, potenza di calcolo e funzionalità si abbinano al meglio tra di loro, pur se a prezzo di un costo elevato per via della tanta memoria onboard
Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090
Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090
Ho affidato ai due modelli lo stesso mestiere ma non lo stesso identico prompt: trasformare una storia illustrata in un video usando una RTX 3090 e modelli locali. Ne sono usciti due film, due applicazioni e due idee opposte di efficienza. Fucina, progettata con Fable 5, colpisce di più nei primi secondi. Storyboard Studio, costruito con ChatGPT/Codex, regge meglio sulla distanza e vince il confronto complessivo, ma di stretta misura
Il tablet rugged leggero e sottile: Lenovo ThinkTab X11 offre resistenza, doppia USB-C e batteria rimovibile
Il tablet rugged leggero e sottile: Lenovo ThinkTab X11 offre resistenza, doppia USB-C e batteria rimovibile
Lenovo ha lanciato il ThinkTab X11 rimettendo piede nel segmento dei tablet Android con il marchio Think dopo oltre un decennio di assenza. Il risultato è un dispositivo che prende una direzione precisa: massima dotazione funzionale, costruzione resistente, autonomia fuori dagli schemi
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 27-11-2008, 13: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, 13: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, 14: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, 16: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, 16: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, 16: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, 16: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, 16: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, 17: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, 18: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 18:21.
javaboy è offline   Rispondi citando il messaggio o parte di esso
Old 27-11-2008, 18: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, 18: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, 18: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, 18: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, 19: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 19:12.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 27-11-2008, 19: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, 19: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, 22: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


ASUS ProArt GoPro Edition è il notebook compatto per chi crea ASUS ProArt GoPro Edition è il notebook c...
Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090 Fable e Sol a confronto: due cartoni animati cre...
Il tablet rugged leggero e sottile: Lenovo ThinkTab X11 offre resistenza, doppia USB-C e batteria rimovibile Il tablet rugged leggero e sottile: Lenovo Think...
AMD Advancing AI 2026: l'hardware AMD per le elaborazioni IA del futuro, tra GPU, CPU e robot AMD Advancing AI 2026: l'hardware AMD per le ela...
Tascabile e con Android: BOOX Go 6 Gen II è diverso da tutti gli altri e-reader Tascabile e con Android: BOOX Go 6 Gen II &egrav...
WINDTRE, le offerte di fine luglio: 5G F...
Due scrivanie angolari gaming a prezzi b...
Telecamere e intelligenza artificiale su...
L'ASUS Zenbook di cui tutti parlano torn...
Helios, la piattaforma di Schneider Elec...
Multiverse Computing raccoglie 500 milio...
Videogiochi, social e azzardo: un giovan...
Tre astronauti rientrano dalla ISS: la S...
Kimi K3 ha trovato 19 zero-day in Redis ...
Aggiungere un acceleratore IA per data c...
Debian valuta lo stop totale ai contribu...
Huawei sfida il ban USA: al via la produ...
QNAP lancia i nuovi NAS TS-262A e TS-462...
E4 Computer Engineering e EuroHPC JU uni...
World di Sam Altman raccoglie 52,5 milio...
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:05.


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