Hozzászólások
-
SzerzőBejegyzés
-
Mert csak azt tudod felulertelmezni, hogy mi tortenjen egy operator alkalmazasa eseten, a parametereinek a szamat nem.
Mert csak azt tudod felulertelmezni, hogy mi tortenjen egy operator alkalmazasa eseten, a parametereinek a szamat nem.
Gondoltam adok egy peldat arra is, hogy hogyan ne programozzunk (hacsak nem akarjuk oruletbe kergetni azt, aki a programot olvassa):
Code:#includeclass Valami {
private:
float tomb[3][3];
public:
Valami & operator ++(int unused);
};// ennek a fuggvenynek is ismerjuk a parametereit
Valami & Valami::operator ++(int unused){
int i,j;
for( i=0; i<3; i++){
for(j=0; j<3; j++)
std::cout << tomb[I][j] << " ";
std::cout << std::endl;
}
return *this;
}int main(void){
Valami objektum;
// ….
// es ez ki fogja irni az objektumot!!!
objektum++;
}Gondoltam adok egy peldat arra is, hogy hogyan ne programozzunk (hacsak nem akarjuk oruletbe kergetni azt, aki a programot olvassa):
Code:#includeclass Valami {
private:
float tomb[3][3];
public:
Valami & operator ++(int unused);
};// ennek a fuggvenynek is ismerjuk a parametereit
Valami & Valami::operator ++(int unused){
int i,j;
for( i=0; i<3; i++){
for(j=0; j<3; j++)
std::cout << tomb[I][j] << " ";
std::cout << std::endl;
}
return *this;
}int main(void){
Valami objektum;
// ….
// es ez ki fogja irni az objektumot!!!
objektum++;
}Attol tartok, utana kellene nezzel, hogy mi a kulonbseg a „/” es a „/=” operatorok kozott…
Attol tartok, utana kellene nezzel, hogy mi a kulonbseg a „/” es a „/=” operatorok kozott…
A C program, ha jol irod meg, sokkal hatekonyabb lesz 😉 (meg egyebkent is)
A C program, ha jol irod meg, sokkal hatekonyabb lesz 😉 (meg egyebkent is)
Vigyazat, offolok.
Lassuk, hogyan lehetne egy osztalyban levo tombot kiiratni.1. modszer: Lusta embereknek, es akiket nem zavar hogy ganyolnak, es az objektumok elszigetelesenek az elvet megszegik:
1.a. printf -vel:
Code:#includeclass Valami {
public: // << ez most public!
float tomb[3][3];
};
int main(void){
Valami objektum;
// ….int i,j;
for( i=0; i<3; i++){
for(j=0; j<3; j++)
printf( "%f ", objektum.tomb[I][j]);
printf("n");
}
}1.b. cout-al:
Code:#includeclass Valami {
public: // << ez most public!
float tomb[3][3];
};
int main(void){
Valami objektum;
// ….int i,j;
for( i=0; i<3; i++){
for(j=0; j<3; j++)
std::cout << objektum.tomb[I][j] << " ";
std::cout << std::endl;
}
}2. modszer: Mivel ha publikussa tesszuk az adatokat, nincs ertelme osztalyt hasznalni, szoval lassuk hogyan irathatunk ki privat adatokat. Az otlet az, hogy kilon metodust ertelmezunk az osztalyon belul, mely kiirja az adatokat.
Code:#includeclass Valami {
private:
float tomb[3][3];
public:
void kiir(void);
};void Valami::kiir(void){
int i,j;
for( i=0; i<3; i++){
for(j=0; j<3; j++)
std::cout << tomb[I][j] << " ";
std::cout << std::endl;
}
}int main(void){
Valami objektum;
// ….
objektum.kiir();
}3. modszer: Az << operator ujraertelmezese.
Code:#includeclass Valami {
private:
float tomb[3][3];
public:
// ez kellenifog
float adjelemet(int i,int j) const {
return tomb[I][j];
}
};// nincs kedvem std:: -t irni sokszor
using namespace std;// ennek a fuggvenynek ismerjuk a parametereit
ostream& operator << (ostream& os, const Valami& s){
int i,j;
for( i=0; i<3; i++){
for(j=0; j<3; j++)
os << s.adjelemet(i,j) << " ";
os << std::endl;
}
return os;
}int main(void){
Valami objektum;
// ….
// kiirhatjuk, mint egy "atlagos" valtozot
cout << objektum;
}Vigyazat, offolok.
Lassuk, hogyan lehetne egy osztalyban levo tombot kiiratni.1. modszer: Lusta embereknek, es akiket nem zavar hogy ganyolnak, es az objektumok elszigetelesenek az elvet megszegik:
1.a. printf -vel:
Code:#includeclass Valami {
public: // << ez most public!
float tomb[3][3];
};
int main(void){
Valami objektum;
// ….int i,j;
for( i=0; i<3; i++){
for(j=0; j<3; j++)
printf( "%f ", objektum.tomb[I][j]);
printf("n");
}
}1.b. cout-al:
Code:#includeclass Valami {
public: // << ez most public!
float tomb[3][3];
};
int main(void){
Valami objektum;
// ….int i,j;
for( i=0; i<3; i++){
for(j=0; j<3; j++)
std::cout << objektum.tomb[I][j] << " ";
std::cout << std::endl;
}
}2. modszer: Mivel ha publikussa tesszuk az adatokat, nincs ertelme osztalyt hasznalni, szoval lassuk hogyan irathatunk ki privat adatokat. Az otlet az, hogy kilon metodust ertelmezunk az osztalyon belul, mely kiirja az adatokat.
Code:#includeclass Valami {
private:
float tomb[3][3];
public:
void kiir(void);
};void Valami::kiir(void){
int i,j;
for( i=0; i<3; i++){
for(j=0; j<3; j++)
std::cout << tomb[I][j] << " ";
std::cout << std::endl;
}
}int main(void){
Valami objektum;
// ….
objektum.kiir();
}3. modszer: Az << operator ujraertelmezese.
Code:#includeclass Valami {
private:
float tomb[3][3];
public:
// ez kellenifog
float adjelemet(int i,int j) const {
return tomb[I][j];
}
};// nincs kedvem std:: -t irni sokszor
using namespace std;// ennek a fuggvenynek ismerjuk a parametereit
ostream& operator << (ostream& os, const Valami& s){
int i,j;
for( i=0; i<3; i++){
for(j=0; j<3; j++)
os << s.adjelemet(i,j) << " ";
os << std::endl;
}
return os;
}int main(void){
Valami objektum;
// ….
// kiirhatjuk, mint egy "atlagos" valtozot
cout << objektum;
} -
SzerzőBejegyzés

legutóbbi hsz