Egy tagfüggvény (más néven metódus) lehet inline?
Van nyelv ahol nem (Python), mert a tagolásnak is szerepe van.
De! legtöbb program nyelv esetén (szinte) az egész mehetne egy sorba, csak úgy nem annyira átlátható.
Mit értesz inline alatt?
Pl. c++ rendelkezik egy inline kulcsszóval. Ez egy tipp a compilernek, hogy függvényhívás helyett a függvény tartalmát "építse be" a hívás helyére, teljesítménynövelés miatt. Hogy ezt megteszi e vagy sem, az rajta múlik. Ha nagyon érdekel mit csinált a compilered, akkor megnézheted meg mit csinál as assembly kód.
Igen, a C++ inline kulcsszóra gondoltam, ami arra utasítja a fordítót, hogy a függvény tartalmát építse be a hívás helyére a hívás helyett.
Viszont osztályon belül ez furának tűnik nekem. Pl. ha privát adattagokkal dolgozik a függvény, akkor azokat a függvény nélkül nem is érhetjük el, nem?
Az OO és a privát adattag is csak egy programozási paradigma (lásd: encapsulation). A nyelv/fordító korlátozza a hozzáférést adatokhoz, de ez nem kell hogy szoros kapcsolatban legyen a valós fizikai megvalósítással.
Ha tudod az adattagnak a virtuális memóriacímét, akkor el is tudod azt érni assembly-ből. Ha a fordító inline megoldást használ, akkor több egyforma kódrészlet is lehet amelyek babrálják azokat az adatokat.
Ha nagyon érdekel és biztosra akarsz menni, akkor meg tudod nézni a clang vagy gcc compiler dokumentációját és forráskódját is.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!