mirror of https://github.com/xfarrow/lasd.git
lezione 3
This commit is contained in:
parent
b1b5f30109
commit
53043b9f42
|
@ -0,0 +1,26 @@
|
|||
#include<iostream>
|
||||
using namespace std;
|
||||
|
||||
enum class Color{red, white, green, black};
|
||||
|
||||
ostream& operator<<(ostream& outputStream, const Color& color){ //la keyword const non è obbligatoria, ma meglio metterla
|
||||
switch(color){
|
||||
case Color::red:
|
||||
outputStream<<"Rosso";
|
||||
break;
|
||||
case Color::white:
|
||||
outputStream<<"Bianco";
|
||||
break;
|
||||
case Color::green:
|
||||
outputStream<<"Verde";
|
||||
break;
|
||||
case Color::black:
|
||||
outputStream<<"Nero";
|
||||
}
|
||||
return outputStream;
|
||||
}
|
||||
int main(){
|
||||
Color myColor = Color::red;
|
||||
cout<<myColor<<endl;
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
#include <iostream>
|
||||
using namespace std;
|
||||
|
||||
enum class Color1{green, white, red};
|
||||
enum class Color2{black, blue, brown, green, red};
|
||||
|
||||
enum Color3{rosso, arancione};
|
||||
//enum Color4{rosso, viola}; //errore, rosso già dichiarato
|
||||
|
||||
int main(){
|
||||
|
||||
// Posso accedere ai valori di Color3 come fossero variabili globali
|
||||
cout<<rosso<<" "<<arancione<<endl; // 0 1
|
||||
|
||||
// Non posso accedere direttamente ai valori di Color1 e Color2
|
||||
//cout<<green;
|
||||
|
||||
//Ma devo richiamarli in questo modo:
|
||||
cout<<(int)Color1::green<<endl; // a differenza dell'enum normale, devo fare un cast
|
||||
|
||||
//if(rosso == Color1::green) //errore
|
||||
if(rosso == (int)Color1::green) cout<<"Cast obbligatorio"<<endl;
|
||||
|
||||
Color1 mioColore = Color1::green;
|
||||
if(mioColore == Color1::green) cout<<"Tipi uguali direttamente confrontabili"<<endl;
|
||||
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
#include<iostream>
|
||||
using namespace std;
|
||||
|
||||
struct Studente{
|
||||
friend void printSecureNumber(Studente); // posso mettere questa linea ovunque all'interno della struct
|
||||
|
||||
string nome;
|
||||
string cognome;
|
||||
private:
|
||||
int secureNumber = 999;
|
||||
};
|
||||
void printSecureNumber(Studente s){
|
||||
cout<<s.secureNumber<<endl;
|
||||
}
|
||||
int main(){
|
||||
Studente st;
|
||||
printSecureNumber(st);
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
#include <iostream>
|
||||
using namespace std;
|
||||
struct Studente{
|
||||
string nome, cognome, matricola;
|
||||
int annoCorso;
|
||||
};
|
||||
ostream& operator<<(ostream& outputStream, const Studente& st){ //la keyword const non è obbligatoria, ma meglio metterla
|
||||
return outputStream<<st.nome<<" "<<st.cognome<<" "<<st.matricola<<" "<<st.annoCorso<<endl;
|
||||
}
|
||||
istream& operator>>(istream& inputStream, Studente& st){
|
||||
return inputStream>>st.nome>>st.cognome>>st.matricola>>st.annoCorso;
|
||||
}
|
||||
int main(){
|
||||
Studente s;
|
||||
cin>>s;
|
||||
cout<<s;
|
||||
}
|
|
@ -9,6 +9,7 @@ int main(){
|
|||
}
|
||||
|
||||
void studentStructWithConstructor(){
|
||||
|
||||
struct StudentNoDefaultConstructor{
|
||||
string nome, cognome, matricola;
|
||||
int annoCorso;
|
||||
|
@ -46,7 +47,7 @@ void studentStruct(){
|
|||
int annoCorso;
|
||||
};
|
||||
struct Student st1{"Alan","Turing","N86000000",1};
|
||||
struct Student st2 = {"Kurt","Godel","N86000001",1};
|
||||
struct Student st2 = {"Kurt","Godel","N86000001",1}; // non preferibile
|
||||
//Student st3("Kurt","Godel","N86000001",1); // errore, richiede esplicitamente un costruttore
|
||||
struct Student st4;
|
||||
struct Student st5();
|
||||
|
|
Loading…
Reference in New Issue