Elméleti C++

Fórumok

Sziasztok,

Rövidesen vizsga és sanszos, h ez a kérdés szerepel majd! ;)
Lehet egy konstruktor túlterhelt?

Szabek

Hozzászólások

"Lehet egy konstruktor túlterhelt?"

Szerintem egy lift pl. lehet túlterhelt, de egy konstruktor ???
Persze felüldefiniálni (overload) lehet.

Ez a túlterhelés olyan kb, mint amikor a rendőrök az angol nyelvtudásukat gyakorolják:
- Stone fire?
- No, sky.

Távol álljon tőlem, hogy nyelvészeti vitába keveredjek, de az overload magyar fordításban, és a szakirodalomban is túlterheltként jelent meg.

Pl
Bjarne Stroustrup: A C++ programozási nyelv (Kiskapu kiadó)
Lehet, hogy nem szerencsés, de nem ez az első hülyén fordított szakszó, és kár ezen lovagolni...

"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee."
-- Ted Ts'o

Bjarne Stroustrup: A C++ programozási nyelv (Kiskapu kiadó)
199. old:
"Azt, hogy különböző típusokra vonatkozó műveletekre ugyanazt a nevet használjuk, túlterhelésnek (overloading) nevezzük."

Tekintve, hogy lehetséges több konstruktor, a válasz igen.

"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee."
-- Ted Ts'o

Termeszetesen lehet. Peldaul, ha van egy Pont osztalyod, akkor lehet olyan konstruktora, ami mondjuk 2 koordinata alapjan hoz letre egy peldanyt, egy masik pedig mondjuk egy masik pont adatai alapjan.
Egy pelda (nem feltetlenul igy erdemes, de igy is lehet):


class Pont {
    private:
        int _x, _y;
    
    public:
        Pont (int x, int y) : _x (x), _y (y) {}
        Pont (Pont &p) : _x (p.getX ()), _y (p.getY ()) {}
    ...
}

Itt a konstruktor overloaded, hiszen ket kulonbozo modon is tudsz peldanyokat letrehozni.

Sztem egyszerűbb lett volna kipróbálni. :->

"No boom today. Boom tomorrow. There's always a boom tomorrow. What? Look, somebody's got to have some damn perspective around here. Boom, sooner or later. BOOM!" -- Lt. Cmd. Ivanova

Tudna valaki egy egyszerű példát írni arra, h hogy kell a >> átdefiniálni? Mert erre nem találtam példát, csak a << -re.

Köszi,
Sz.

u.i: ha holnap átmegyek prog-ból, igérem nem kérdezek több ilyet...:)

Hmmm, hát pl ugyanúgy...

Bár gondolom te az istream baloldalú operátorra gondoltál.
Itt egy primitív példa:


std::istream& operator>> (std::istream &in, MyType &a)
{
   int i;
   in >> i;
   a.setInt(i);
   return in;
}

"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee."
-- Ted Ts'o