Inline funkce v C / C++

Jazyk C (po standardizaci 1999, C99) a C++ umožňují definovat funkce jako inline, jinak řečeno jako vložené funkce.



K čemu že je to dobré?
Každé volání funkce něco stojí – alespoň procesorový čas. A ve chvíli, kdy nějakou funkci voláte v cyklu stokrát, tisíckrát, miliónkrát (pro každého je "drahé" jinak velké), může být ušetřený procesorový čas znát.

Jak to funguje?
Podobně jako makro. Když kompilátor narazí na klíčové slovo inline v dekalraci funkce, pochopí, že by asi bylo dobré, kdyby se ta funkce nevolala příliš často (z hlediska úspory procesorového času). Vezme tedy tělo této funkce a vloží jej přímo do místa, odkud se funkce volá.


Příklad pro jazyk C a neobjektové funkce C++
inline int AMinusB2(int a, int b)
{
 return (a-b)*(a-b) ;
}

Příklad inline metody v C++ třídě
class Fred {
        public:
        add(int a,int b){ return a+ b; }
};
V uvedeném příkladu je metoda add() považována za inline, neboť má své tělo přímo v deklaraci.

Comments

Post a Comment