mirror of https://github.com/xfarrow/lasd.git
lezione 2 + 1/2
This commit is contained in:
parent
2e5192afe6
commit
b1b5f30109
BIN
teoria/a.out
BIN
teoria/a.out
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,73 @@
|
|||
#include <iostream>
|
||||
using namespace std;
|
||||
void differentStructSize();
|
||||
void studentStruct();
|
||||
|
||||
int main(){
|
||||
studentStruct();
|
||||
return 0;
|
||||
}
|
||||
|
||||
void studentStructWithConstructor(){
|
||||
struct StudentNoDefaultConstructor{
|
||||
string nome, cognome, matricola;
|
||||
int annoCorso;
|
||||
|
||||
StudentNoDefaultConstructor(string n, string c, string m, int a){
|
||||
nome = m;
|
||||
cognome = c;
|
||||
matricola = m;
|
||||
annoCorso = a;
|
||||
}
|
||||
};
|
||||
struct StudentNoDefaultConstructor st1{"Alan","Turing","N86000000",1}; //OK
|
||||
//struct StudentNoDefaultConstructor st2; //errore. no default constructor
|
||||
|
||||
/* Qui lascia compilare la dichiarazione di st3 ma non permette di lavorarci
|
||||
su, causa costruttore di default mancante. */
|
||||
struct StudentNoDefaultConstructor st3();
|
||||
//st3.nome = "Planck";
|
||||
//cout<<st3.nome;
|
||||
|
||||
struct StudentOnlyDefaultConstructor{
|
||||
string nome, cognome, matricola;
|
||||
int annoCorso;
|
||||
StudentOnlyDefaultConstructor() = default;
|
||||
};
|
||||
|
||||
struct StudentOnlyDefaultConstructor st4;
|
||||
struct StudentOnlyDefaultConstructor st5();
|
||||
//struct StudentOnlyDefaultConstructor st6{"Alan","Turing","N86000000",1}; errore
|
||||
}
|
||||
|
||||
void studentStruct(){
|
||||
struct Student{
|
||||
string nome, cognome, matricola;
|
||||
int annoCorso;
|
||||
};
|
||||
struct Student st1{"Alan","Turing","N86000000",1};
|
||||
struct Student st2 = {"Kurt","Godel","N86000001",1};
|
||||
//Student st3("Kurt","Godel","N86000001",1); // errore, richiede esplicitamente un costruttore
|
||||
struct Student st4;
|
||||
struct Student st5();
|
||||
cout<<st1.cognome<<" e "<<st2.cognome<<" studiano alla Federico II"<<endl;
|
||||
}
|
||||
|
||||
void differentStructSize(){
|
||||
/*
|
||||
A causa della struttura di un elaboratore, due struct con gli stessi elementi
|
||||
potrebbero avere una dimensione diversa.
|
||||
Con g++ 7.5.0 senza opzioni di ottimizzazione S1 pesa 96 byte, mentre S2
|
||||
pesa 64 byte.
|
||||
*/
|
||||
struct S1{
|
||||
char c1;
|
||||
int i;
|
||||
char c2;
|
||||
};
|
||||
struct S2{
|
||||
char c1,c2;
|
||||
int i;
|
||||
};
|
||||
cout<<sizeof(S1)<<" "<<sizeof(S2)<<endl; //12 8
|
||||
}
|
Loading…
Reference in New Issue