-
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!
- Milyen légkondit a lakásba?
- Horgász topik
- MWC 2026: Varázslatos kínai B-brand telefonok
- Ingatlanos topic!
- Samsung kuponkunyeráló
- PROHARDVER! feedback: bugok, problémák, ötletek
- Anglia - élmények, tapasztalatok
- Path of Exile (ARPG)
- PlayStation 1 / 2
- Vezeték nélküli fejhallgatók
- További aktív témák...
- AMD Phenom II X6 1090T Black Edition Hatmagos AM3 processzor, + CPU hűtő
- Lenovo ThinkPad T480 i7-8650U / 16GB / 512GB SSD / FHD Dupla akku Win 11 Pro Szép állapot
- Kingston FURY Beast 32GB DDR4 3200MHz (Beszámítás)
- MEDION Erazer Major X20 Gamer laptop -40% i7-13700HX 16/1TB NVIDIA RTX 4070 8GB QHD 240Hz
- Seagate IronWolf 4TB HDD 100/100 Beszámítás OK!
- GYÖNYÖRŰ iPhone 12 mini 256GB Red -1 ÉV GARANCIA -Kártyafüggetlen, MS3627
- iPhone 12 Pro Max 128GB Pacific Blue -1 ÉV GARANCIA - Kártyafüggetlen, MS4328, 100% AKKSI
- Beszámítás! MSI G27C4 E3 27 180Hz FHD VA 1ms gamer monitor garanciával hibátlan működéssel
- BESZÁMÍTÁS! GIGABYTE RTX 5080 AERO OC 16GB videokártya garanciával hibátlan működéssel
- GYÖNYÖRŰ iPhone 13 Mini 256GB Midnight -1 ÉV GARANCIA - Kártyafüggetlen, MS4426, 100% AKKSI
Á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.
.


