Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione Samsung Galaxy Z Fold8 Ultra: il pieghevole più famoso diventa quasi perfetto
Recensione Samsung Galaxy Z Fold8 Ultra: il pieghevole più famoso diventa quasi perfetto
Samsung rinnova la serie pieghevole di punta con Galaxy Z Fold8 Ultra: pannello interno da 8 pollici quasi senza piega, cerniera Flex Titanium, Snapdragon 8 Elite Gen 5 for Galaxy e batteria finalmente da 5.000 mAh. Prezzo italiano da 2.299 a 2.899 euro. Tra colorimetro, benchmark reali e giorni di uso quotidiano, ecco dove questo pieghevole convince e dove il nome Ultra fatica ancora a trovare piena giustificazione
Insta360 X6: Dolby Vision, 8K e montaggio "Zero Editing"
Insta360 X6: Dolby Vision, 8K e montaggio "Zero Editing"
La nuova Insta360 X6 introduce sensori Sony da 1/1.1" e un SoC Triple AI a 4nm. Analizziamo le riprese 8K, il primo Dolby Vision nativo a 10-bit nel settore sferico e l'innovativo flusso di lavoro diretto sulla futura versione 22 di DaVinci Resolve.
Due settimane con Dacia Spring 2026: novità, consumi, autonomia reale e test bagagli
Due settimane con Dacia Spring 2026: novità, consumi, autonomia reale e test bagagli
Dopo due settimane trascorse al volante della Dacia Spring 2026 possiamo raccontarvi tutto, dalle novità di motore e batteria, fino ai consumi in tutti le situazioni, compresa l'autonomia reale ad alta velocità
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 05-07-2007, 21:42   #1
nico88desmo
Senior Member
 
Iscritto dal: Jul 2006
Messaggi: 1568
[Java - C++] qualche consiglio con un esempio

Un saluto a tutti!

Ho da poco ripreso a programmare ad oggetti.
Come linguaggio di programmazione ho utilizzato sempre il java, però mi affascina, in quanto più comune e quindi più utilizzato, il C++.

Per iniziare avevo pensato di basarmi su un progetto java e riga per riga convertirlo in C++.
La prima difficoltà incontrata è l'allocazione di un nuovo oggetto all'interno di una classe.

Per esempio..

Codice:
import java.io.*;
import java.awt.*;

class ProgConv {

    public static void main (String args[]) {
	
	ConvForm p = new ConvForm();
	
	p.setVisible(true);
	p.setResizable(true);
	p.setSize(400,400);

    }
}
Dato questo codice in java, l'allocazione di un nuovo oggetto come si fa in C++?
nico88desmo è offline   Rispondi citando il messaggio o parte di esso
Old 06-07-2007, 00:27   #2
mapomapo
Senior Member
 
L'Avatar di mapomapo
 
Iscritto dal: May 2005
Città: Bari
Messaggi: 349
l'allocazione dinamica in c++ funziona con l'operatore new....la deallocazione con l'operatore delete....la cosa dovrebbe essere molto simile....

esempio:

int *v;

v = new int;

v = 2;

delete v;


Vito
__________________
Si può vincere una guerra in due...o forse anche da solo. Si può estrarre il cuore anche al più nero assassino, ma è più difficile cambiare un'idea!
mapomapo è offline   Rispondi citando il messaggio o parte di esso
Old 06-07-2007, 01:18   #3
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da nico88desmo Guarda i messaggi
Come linguaggio di programmazione ho utilizzato sempre il java, però mi affascina, in quanto più comune e quindi più utilizzato, il C++.
sia Java che C++ sono molto diffusi, ma potendo scegliere direi che è masochistico scegliere C++: Java è più facile e quindi più produttivo, ed è veramente molto difficile che tu abbia un irrinunciabile bisogno delle features che il C++ ha e Java no.

Quote:
Dato questo codice in java, l'allocazione di un nuovo oggetto come si fa in C++?
è identica: si usa l'operatore new, solo che a differenza di Java in C++ devi anche sbatterti coi puntatori: la variabile che tiene il... "riferimento all'oggetto", deve essere dichiarata come puntatore alla classe, e per dichiarare un puntatore devi precedere il nome della variabile con un asterisco. dopodiché non è finita: il C++ non ha il garbage collector, quindi la memoria allocata con new te la devi liberare a mano, e se te ne scordi è un problema. esempio:

Codice:
class Lol {
	.
	.
	.
};

.
.
.

Lol *asd = new Lol();

// uso l'oggetto
// ...

delete asd;
i pochi cambiamenti che il passaggio a C++ introduce da Java sono tutti molto poco intuitivi. è raro trovare un senso a tale passaggio.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 06-07-2007, 01:21   #4
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da mapomapo Guarda i messaggi
l'allocazione dinamica in c++ funziona con l'operatore new....la deallocazione con l'operatore delete....la cosa dovrebbe essere molto simile....
con quell'esempio (tra l'altro errato) non lo aiuti: in Java non è possibile allocare dinamicamente un solo int, semmai un vettore costituito da un solo int. ed inoltre Java ha un comodissimo garbage collector, percui niente delete
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 06-07-2007, 09:42   #5
nico88desmo
Senior Member
 
Iscritto dal: Jul 2006
Messaggi: 1568
Ringrazio per le risposte tempestive

Quote:
Originariamente inviato da 71104 Guarda i messaggi
sia Java che C++ sono molto diffusi, ma potendo scegliere direi che è masochistico scegliere C++: Java è più facile e quindi più produttivo, ed è veramente molto difficile che tu abbia un irrinunciabile bisogno delle features che il C++ ha e Java no.
Questo lo so, infatti è anche per questo che a scuola abbiamo imparato il java. Però, siccome tutti parlano di questo C++, allora vorrei trarne delle conclusioni io a riguardo di questo linguaggio, e per questo motivo ho deciso di impararlo.

Ho provato con questo codice
Codice:
#pragma once

using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
//#include "h1.h"

namespace prova_1 {

	public ref class Form2 : public System::Windows::Forms::Form {
	
	h1 *p = new h1();

	public:

		
		Form2(void) {
			InitializeComponent();
			
			//
			//TODO: aggiungere qui il codice del costruttore.
			//
		}
però mi dà errore nell'allocazione di p
nico88desmo è offline   Rispondi citando il messaggio o parte di esso
Old 06-07-2007, 11:40   #6
mapomapo
Senior Member
 
L'Avatar di mapomapo
 
Iscritto dal: May 2005
Città: Bari
Messaggi: 349
Quote:
Originariamente inviato da 71104 Guarda i messaggi
con quell'esempio (tra l'altro errato) non lo aiuti: in Java non è possibile allocare dinamicamente un solo int, semmai un vettore costituito da un solo int. ed inoltre Java ha un comodissimo garbage collector, percui niente delete
ho detto dovrebbe perchè non so un'h di java

comunque sia non penso sia un errore allocare dinamicamente un intero in quella maniera....non serve a niente farlo...era giusto per far vedere i due operatori...
__________________
Si può vincere una guerra in due...o forse anche da solo. Si può estrarre il cuore anche al più nero assassino, ma è più difficile cambiare un'idea!
mapomapo è offline   Rispondi citando il messaggio o parte di esso
Old 06-07-2007, 13:46   #7
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da nico88desmo Guarda i messaggi
Ho provato con questo codice
Codice:
#pragma once

using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
//#include "h1.h"

namespace prova_1 {

	public ref class Form2 : public System::Windows::Forms::Form {
	
	h1 *p = new h1();

	public:

		
		Form2(void) {
			InitializeComponent();
			
			//
			//TODO: aggiungere qui il codice del costruttore.
			//
		}
però mi dà errore nell'allocazione di p
uhm, stai usando C++ Managed, non C++ nudo e crudo... purtroppo sintatticamente parlando non so aiutarti, ma rifacendomi al C++ standard posso dirti che (a differenza di Java) non è possibile inizializzare una variabile membro alla sua dichiarazione nella classe: la devi inizializzare per forza da codice. dal momento che usi C++ Managed non so se ti conviene usare new, piuttosto dovresti documentarti sull'operatore gcnew che supporta il garbage collector (se usi gcnew non hai bisogno di fare delete).
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 06-07-2007, 13:47   #8
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da mapomapo Guarda i messaggi
comunque sia non penso sia un errore allocare dinamicamente un intero in quella maniera....
in Java si, in C++ no, ma l'errore nell'esempio C++ era un altro: hai assegnato un int ad un int*
Codice:
v = 2;
avresti dovuto scrivere invece:
Codice:
*v = 2;
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 06-07-2007, 14:16   #9
nico88desmo
Senior Member
 
Iscritto dal: Jul 2006
Messaggi: 1568
Quote:
Originariamente inviato da 71104 Guarda i messaggi
uhm, stai usando C++ Managed, non C++ nudo e crudo... purtroppo sintatticamente parlando non so aiutarti, ma rifacendomi al C++ standard posso dirti che (a differenza di Java) non è possibile inizializzare una variabile membro alla sua dichiarazione nella classe: la devi inizializzare per forza da codice. dal momento che usi C++ Managed non so se ti conviene usare new, piuttosto dovresti documentarti sull'operatore gcnew che supporta il garbage collector (se usi gcnew non hai bisogno di fare delete).
Che differenza c'è???
nico88desmo è offline   Rispondi citando il messaggio o parte di esso
Old 07-07-2007, 18:28   #10
nico88desmo
Senior Member
 
Iscritto dal: Jul 2006
Messaggi: 1568
up
nico88desmo è offline   Rispondi citando il messaggio o parte di esso
Old 07-07-2007, 18:41   #11
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
la differenza è che il C++ Managed assomiglia di più a una piattaforma managed, per l'appunto; tanto per cominciare ha un garbage collector, e poi non so di preciso quali altre differenze ci siano; forse il fatto che un programma scritto in Visual C++ in C++ Managed produce bytecode anziché un eseguibile nativo.

comunque sia quando in giro senti parlare di C++ di certo non si sta parlando di C++ Managed: quando se ne parla viene specificato esplicitamente.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 07-07-2007, 18:44   #12
mapomapo
Senior Member
 
L'Avatar di mapomapo
 
Iscritto dal: May 2005
Città: Bari
Messaggi: 349
Quote:
Originariamente inviato da 71104 Guarda i messaggi
in Java si, in C++ no, ma l'errore nell'esempio C++ era un altro: hai assegnato un int ad un int*
Codice:
v = 2;
avresti dovuto scrivere invece:
Codice:
*v = 2;
devo smetterla di dare consigli quando torno a casa la sera
inutile dirti che leggevo *v in "automatico".....che nab....

vabbè
__________________
Si può vincere una guerra in due...o forse anche da solo. Si può estrarre il cuore anche al più nero assassino, ma è più difficile cambiare un'idea!
mapomapo è offline   Rispondi citando il messaggio o parte di esso
Old 09-07-2007, 10:17   #13
nico88desmo
Senior Member
 
Iscritto dal: Jul 2006
Messaggi: 1568
Quote:
Originariamente inviato da 71104 Guarda i messaggi
la differenza è che il C++ Managed assomiglia di più a una piattaforma managed, per l'appunto; tanto per cominciare ha un garbage collector, e poi non so di preciso quali altre differenze ci siano; forse il fatto che un programma scritto in Visual C++ in C++ Managed produce bytecode anziché un eseguibile nativo.

comunque sia quando in giro senti parlare di C++ di certo non si sta parlando di C++ Managed: quando se ne parla viene specificato esplicitamente.
Capito.
nico88desmo è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione Samsung Galaxy Z Fold8 Ultra: il pieghevole più famoso diventa quasi perfetto Recensione Samsung Galaxy Z Fold8 Ultra: il pieg...
Insta360 X6: Dolby Vision, 8K e montaggio "Zero Editing" Insta360 X6: Dolby Vision, 8K e montaggio "...
Due settimane con Dacia Spring 2026: novità, consumi, autonomia reale e test bagagli Due settimane con Dacia Spring 2026: novit&agrav...
AORUS GeForce RTX 5080 INFINITY WOOD 16G: una scheda video diversa dalle altre AORUS GeForce RTX 5080 INFINITY WOOD 16G: una sc...
Hyundai Ioniq 9: dopo due settimane di test non avremmo voluto restituirla Hyundai Ioniq 9: dopo due settimane di test non ...
Vogliono costruire un monumento per Elon...
Ring Intercom Audio crolla a 39,99€ su A...
La Francia blocca il divieto dei social ...
Trump citato in giudizio: chiesto lo sto...
PEC obbligatoria per revisione e passagg...
Il ripulitore di watermark Claude da 4.5...
Xiaomi 17 Ultra scambia il Sole per la L...
È arrivata la migliore e-bike Eng...
Apple Mac mini M4, ecco perché conviene ...
Robot aspirapolvere in offerta su Amazon...
Il nuovo pick-up elettrico di Ford &egra...
Google Pixel 11 arriva su Amazon: preord...
Mega sconti su attrezzi a batteria e rob...
Google Search dà per morto Sam Al...
Il noleggio delle GPU NVIDIA si quota in...
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: 20:58.


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