-
Fototrend

Új hozzászólás Aktív témák
-
Jester01
veterán
Ez a kód olyan mintha a haverom írta volna
Ész nélkül kihasználja a nyelvben lévõ lehetõségeket, de feláldozza az olvashatóságot és karbantarthatóságot. Kiváló példája annak, hogyan ne használjuk a template-eket, hacsak nem vagyunk zsenik.
Mindenesetre a dolog kb. a következõképpen mûködik:
Vektorokkal végez mûveleteket, ez gondolom nyilvánvaló. A Vector<T, N> N darab T típusú elemet tartalmaz. A VectorSum osztály az összeadás mûveletet reprezentálja.
Az elsõ összeadás operátor azt írja le, hogy két azonos elemtípusú és méretû vektor összeadható, és az eredménye ugyancsak ilyen tulajdonságú vektor lesz.
A második összeadás operátor azt mondja, hogy egy vektorösszeghez jobbról még hozzá lehet adni egy másik vektort is.
Az init és print függvények gondolom világosak.
A megvalósítandó mûveletek:
vektor + vektorösszeg: a vektorösszeg + vektor mûvelet párja, a jobb és bal oldal felcserélésével.
vektorösszeg + vektorösszeg: mint az elõzõ, csak most mindkét oldal vektorösszeg
számmal szorzás jobbról és balról: be kell vezetni egy új alapmûveletet a VectorSum mintájára, pl. így:
template<class T, long N, class V>
class ScaledVector
{
long factor;
const V &vector;
public:
ScaledVector(long f, const V &v) : factor(f), vector(v) {}
T operator[](long i) const {
return factor * vector[ i ];
}
};
Igényesebb kollegák a faktor típusát beadhatják template paraméternek, akkor majd pl. double típussal is lehet szorozni.
A Vector osztályba fel kell venni egy újabb overloadot az = operátorra, hogy ilyen ScaledVector osztályt is tudjon fogadni (ugyanúgy sima elemmásolás van benne).
Ezután már csak a szorzás operátorra kell egy overload, pl. így:
template<class T, long N>
inline ScaledVector<T,N,Vector<T,N> >
operator*(int f, const Vector<T,N> &v) {
return ScaledVector<T,N,Vector<T,N> >(f,v);
}
Illetve hasonlóképpen jobbról való szorzáshoz is.
És mivel ilyen ScaledVector objektumokat még össze is akarunk adni, hát ahhoz rá kell engedni a VectorSum-ot két ScaledVector-ra, imígyen:
template<class T, long N, class Left, class Right>
inline VectorSum<T,N,ScaledVector<T,N,Left>,ScaledVector<T,N,Right> >
operator+(const ScaledVector<T,N,Left> &l, const ScaledVector<T,N,Right> &r) {
return VectorSum<T,N,ScaledVector<T,N,Left>,ScaledVector<T,N,Right> >(l,r);
}
Egyszerû, nem igaz?
[Szerkesztve] -
template <class T>
class Feltoltes
{
private:
vector<T> tarolo;
int vechossz;
public:
Feltoltes(int vh);
void feltolt_billentyuzetrol();
void feltolt_random();
}
Azt, hogy barmilyen tipussal veletlenszeruen fel lehessen tolteni egy vektort, eleg nehezen ertelmezem, hiszen a templatezett osztalynal tudnunk kellene, milyen parametereket allithatunk veletlenszeruen, stb.
A sablonparameter itt a template-kre utal. Keress ra a ''template'' szora, es meg fogod talalni a magyarazatat. -
Miracle
senior tag
az elottem szolohoz csatlakoznek: ezek a metodusok az inline kulcsszotol fuggetlenul SOSEM lesznek inlineositva, es a hivasuk is elegge koltseges, legalabbis a nem-virtualis fugvenyekhez kepest. es ha 1 osztalynak vannak virtualis fuggvenyei, akkor az osztaly peldanyainak merete sizeof(void*) -al noni fog.
[Szerkesztve] -
Nedudgi
aktív tag
Virtual kulcsszóval azt jelezzük a fordítónak hogy az adott fv a leszármazott osztályban (várhatóan) felül lesz írva. Ezért hogy a függvény melyik implementációját kell használni az futásidőben dönthető el. Általában absztrakt osztályokban használják (persze lehet máshol is). Egy ilyen absztrakt osztályból nincs értelme létrehozni objektumot, de származtatni frankón lehet belőle.
-
Miracle
senior tag
nos, az, hogy csinaljatok meg, itt az email cimem nem kerdes. sosem csinaltam meg (szandekosan) senki mas hazi feladatat, es nem is szandekozom most elkezdeni, mert baromira nem birom az olyan embereket, akik ugy vegeznek el egy kurzust, hogy kozuk nincs az anyaghoz.
de ha konkret kerdesed van, akkor arra szivesen valaszolok akar en is, de ha korulnezel itt a forumon, akkor azt lathatod, hogy rengeteg topic indult mar, es rengeteg valasz is, es ennek joresze kerdesekre adott (gyakran tobb) valasz. hogy miert van ennyi? mert eleg soan jarunk erre, akik szeretnek segiteni az erdeklodoknek, probalkozoknak, esetleg kevesbe tapasztaltaknak. hogy neked miert nem valaszolt senki? azert, mert nyitottal hulyesegbol(kereso rlz) egy uj topicot(pedig van mar egy halom c++os topic, meg ,,gyors segitseg kellene'' is), a masodikkal meg ugyan azt a postot bevagtad egy masik topicba is. es raadasul nem is kerdest tettel fel(vagy iranymutatast, vagy informaciot, vagy akarmit segitseget kertel), hanem megkerted a kedves forumozokat, hogy csinaljak meg neked a feladat megoldasat. ezzel az a baj, hogy nem csak az latszik belole, hogy meg 1 percet sem foglalkoztal vele, hanem az is, hogy nem is akarsz 1 percet foglalkozni vele, neked egy kesz megoldas kell. ilyet itt szerintem nem fogsz kapni.
[Szerkesztve] -
VladimirR
nagyúr
az elso kerdesedre: igen, jol erted
a masodikra: nem az osztalynak, hanem a tagjainak van lathatosaga (ha jol tudom), es altalaban ugy szokas beallitani a lathatosagot, hogy a valtozok mind privat-ok, a fuggvenyek kozul pedig azok, amiket kivulrol kell majd hivni, azok pulic-ok -
VladimirR
nagyúr
azt jelenti, hogy csak a vele egy osztalyban levo eljarasok/fuggvenyek fernek hozza
hasznalata altalaban ugy nez ki, hogy a valtozok/fugvenyek (member-ek) megadasakor elejuk irod, hogy privat (vagy public, vagy protected, elobbihez mindenki hozzafer, utobbihoz az adott osztaly es annak ''orokosei'')
altalaban nem kell minden sor ele kiirni a lathatosagat, hanem valahjogy igy:
privat
valtozo
valtozo
fuggveny
public
valtoz
fuggveny
fuggveny
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
- Itt a Galaxy S26 széria: az Ultra fejlődött, a másik kettő alig
- Hálózati / IP kamera
- Premier dátumot kapott az Atomic Heart negyedik, egyben utolsó kiegészítője
- Jövedelem
- sziku69: Fűzzük össze a szavakat :)
- BestBuy ruhás topik
- Luck Dragon: Asszociációs játék. :)
- World of Tanks - MMO
- Milyen belső merevlemezt vegyek?
- Star Citizen
- További aktív témák...
- Xiaomi Redmi Note 12 Pro Plus 8/256GB Újszerű,Kétkártyás,Dobozos,Tartozékaival. 1 Év Garanciával!
- Elite x360 1040 G10 2-in-1 14" QHD+ IPS érintő i7-1365U 32GB 512GB NVMe ujjolv IR kam gar
- Sapphire PULSE RX 6700 XT 12GB Garanciával!
- EliteBook X Flip G1i 14 AI 2-in-1 14" FHD+ IPS érintő Ultra 7 258V 32GB 1TB NVMe gar
- Manli RTX 4070 Ti Gallardo 12GB Garanciával!
- BESZÁMÍTÁS! Asus H310M i7 9700F 16GB DDR4 512GB SSD STRIX RTX 2070 Super 8GB Corsair Crystal 550W
- Apple iPhone 13 128GB, Kártyafüggetlen, 1 Év Garanciával
- Apple iMac 21,5" 2015 Late / 8GB DDR3 / 1TB HDD / Bill+Egér 6 hó garancia, számlával!
- Telefon felvásárlás!! Samsung Galaxy A14/Samsung Galaxy A34/Samsung Galaxy A54
- HIBÁTLAN iPhone 13 Mini 256GB Green -1 ÉV GARANCIA - Kártyafüggetlen, MS4673
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

Ész nélkül kihasználja a nyelvben lévõ lehetõségeket, de feláldozza az olvashatóságot és karbantarthatóságot. Kiváló példája annak, hogyan ne használjuk a template-eket, hacsak nem vagyunk zsenik.
.


