Új hozzászólás Aktív témák
-
jattila48
aktív tag
válasz
AsterixComic
#3101
üzenetére
1. Ha átdefiniálod a new operátort pl. debug céljából. Ekkor magában az átdefiniálásban nem new-t, hanem malloc-ot fogsz használni.
Vagy ha egyszerűen csak szükséged van egy bizonyos méretű pufferre, ahová később olvasol be (pl. fájlból, hálózatról) adatot. Ezt lehet persze char *p=new char[meret]; -tel is, de akkor már a malloc legalább olyan jó. Vagyis akkor, ha nem konstruálni akarsz egy előre ismert típusú objektumot, hanem csak külső forrásból (fájl, hálózat) beolvasni bináris adatot, aminek a típusát esetleg nem is ismered előre. Ilyen lehet pl, ha IP csomagokat olvasol be, amikről előre nem tudod, hogy TCP vagy UDP csomagot fog-e tartalmazni. Ekkor a típus megállapítása után (IP protokoll jelzés) az IP payload részére egyszerűen egy C pointercasttal "ráhúzod" a TCP vagy UDP struktúrát. -
LordX
veterán
válasz
AsterixComic
#3101
üzenetére
1. Felelős munkatársak megvetése esetén, általuk való verés elszenvedésével ideiglenesen (code review-ig) helyettesithető.
2. Logikaira ki tudsz találni példát, bitenkénti és-re lásd 1-es pont. -
EQMontoya
veterán
válasz
AsterixComic
#3101
üzenetére
1,
Ez egy bonyolultabb téma, kurvára nem alapokhoz való. A válasz egyébként igen, és van is létjogosultsága bizonyos esetekben. Illetve csak félig helyettesítődik ott is, mert placement new-t akkor is kell használni, de a lényeg az, hogy van, amikor szeretnénk elválasztani a memóriafoglalásokat az objektumok inicializálásától és megszüntetésétől.
Jó példa erre az vector, ami lazán fog Neked a háttérben valamekkora helyet foglalni, és oda pakolászol. -
ToMmY_hun
senior tag
válasz
AsterixComic
#3101
üzenetére
2:
logikai:
if( a && b){
kifejezes;
}A kifejezés akkor és csak akkor kerül végrehajtásra, ha az "a" és a "b" értéke is logikai igaz.
bitenkénti és:
int a = 0b1010;
int b = 0b1100;c = a & b;
c értéke ekkor: 0b1000;
-
válasz
AsterixComic
#2701
üzenetére
Maguk a kérdések is elég homályosak ill. konkrétan hibásak.
1. A parancssori paraméter (ahogy az a C++ standardban is van) csak char* típusú lehet (azok vannak az argv-ben). Az lehet, hogy egy karaktertömböt intként értelmezünk, de attól az még karaktertömb. Minden bizonnyal valami olyat akar hallani a tanár, hogy
int param=0;
if ( argc >= 2 )
{
param = atoi(argv[1]);
}2. Konstruktorra/destruktorra akkor van szükség, ha azt szeretné az ember, hogy az objektum létrejöttekor/megszűnésekor automatikusan lefusson valami kód. Az, hogy az a kód konkrétan mit csinál, tulajdonképpen lényegetelen. A dinamikusan foglalt memóriát máshogy is fel lehet szabadítani és egy csomó olyan esetben is szükség van *truktorra, amikor nincs dinamikusan foglalt memória (akár mindenféle lockokat meg nyitott handle-ket lekezelni, akár olyan egyszerű dolgok miatt, mint hogy az ember kiírjon vmi trace-t).
3. ...és a constsága, mert lehet két ugyanolyan nevű, azonos paraméterlistájú metódus, amik csak abban különböznek, hogy az egyik const, a másik meg nem.
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Project Motor Racing-Straight4 Studios
- Kodi és kiegészítői magyar nyelvű online tartalmakhoz (Linux, Windows)
- Fejhallgató erősítő és DAC topik
- Linux felhasználók OFF topikja
- Házimozi belépő szinten
- Luck Dragon: Asszociációs játék. :)
- Xiaomi Mi 10 - nem olcsóbb, hanem kedvezőbb árfekvésű
- Windows 11
- Kerékpárosok, bringások ide!
- Elemlámpa, zseblámpa
- További aktív témák...
- Death Stranding Director s Cut
- Újszerű HP 14s-dq5001nh - 14"FHD IPS - i5-1235U - 16GB - 512GB - Win11 - Magyar - Garancia
- Bomba ár! Dell Latitude 5495 - Ryzen 5 I 8GB I 256SSD I 14" FHD I HDMI I Radeon I Cam I W10 I Gari
- Azonnali készpénzes AMD Radeon RX 6000 sorozat videokártya felvásárlás személyesen/csomagküldéssel
- ÁRGARANCIA!Épített KomPhone Ryzen 5 4500 16/32/64GB RAM RTX 3060 12GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: NetGo.hu Kft.
Város: Gödöllő
Cég: Laptopműhely Bt.
Város: Budapest

