Kiedy należy używać funkcji śródwierszowych
Funkcje wbudowane najlepiej nadają się do małych funkcji takich jak te, które pozwalają uzyskać dostęp do prywatnych elementów danych.Głównym celem tych jedno- lub dwulinijkowych "metod dostępu" jest zwrócenie informacji o stanie obiektów; krótkie funkcje są wrażliwe na obciążenie związane z wywołaniem funkcji.Dłuższe funkcje tracą proporcjonalnie mniej czasu na sekwencję wywołania/zwrócenia i w związku z tym dostarczają mniej korzyści z wbudowania.
Przykład
Klasa Point przedstawiona w Wynikach wywołania funkcji może być zoptymalizowana w następujący sposób:
// when_to_use_inline_functions.cpp
class Point
{
public:
// Define "accessor" functions as
// reference types.
unsigned& x();
unsigned& y();
private:
unsigned _x;
unsigned _y;
};
inline unsigned& Point::x()
{
return _x;
}
inline unsigned& Point::y()
{
return _y;
}
int main()
{
}
Zakładając, że manipulacja współrzędnymi jest stosunkowo często wykonywana w kliencie takiej klasy, określając dwa akcesory (x i y w poprzednim przykładzie) jako inline z reguły oszczędza się narzut związany z:
Wywołaniem funkcji (włączając przekazanie parametrów i umieszczenie adresu obiektu na stosie)
Zachowaniem ramki stosu wywołującego
Ustawieniem nowej ramki stosu
Komunikacją związaną ze zwracaną wartością
Przywróceniem starej ramki stosu
Zwrot