Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
vivo X300 Pro rappresenta un'evoluzione misurata della serie fotografica del produttore cinese, con un sistema di fotocamere migliorato, chipset Dimensity 9500 di ultima generazione e l'arrivo dell'interfaccia OriginOS 6 anche sui modelli internazionali. La scelta di limitare la batteria a 5.440mAh nel mercato europeo, rispetto ai 6.510mAh disponibili altrove, fa storcere un po' il naso
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 05-07-2007, 22: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, 01: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, 02: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, 02: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, 10: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, 12: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, 14: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, 14: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, 15: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, 19: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, 19: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, 19: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, 11: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 vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria Recensione vivo X300 Pro: è ancora lui il...
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
Nuove informazioni sul fallimento del la...
SpaceX: completato parte dell'assemblagg...
Landspace si prepara al secondo lancio d...
Tutti gli sconti Apple su Amazon: tornan...
Altro che entry-level: due smartwatch Am...
Roscosmos ha posticipato (ancora) il lan...
Isar Aerospace si prepara al secondo lan...
Tory Bruno è entrato in Blue Orig...
Fujifilm lancia la cartuccia per archivi...
Dreame H15 Mix: la soluzione 7-in-1 per ...
AirPods Pro 3 in forte sconto su Amazon:...
36 offerte Amazon, molte appena partite:...
2 caricatori multipli eccezionali: da 28...
OLED e 360 Hz a un prezzo senza preceden...
Roborock Q10 S5+ a un prezzo molto conve...
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: 22:40.


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