Język C++
function
[szablon klasy] Szablon, który potrafi przechowywać, kopiować oraz wywoływać zarówno funkcje, wyrażenia lambda jak i metody klas.Składnia
#include <functional>
namespace std
{
template < typename Sygnatura >
class function;
template < typename ZwracanaWartosc, typename...TypyArgumentow >
class function < ZwracanaWartosc( TypyArgumentow...) >
{
};
}
Parametry szablonu
Opis szczegółowy
Szablon, który potrafi przechowywać, kopiować oraz wywoływać zarówno funkcje, wyrażenia lambda jak i metody klas.
Przykład
#include <functional>
#include <cstdio>
class CKlasa
{
public:
CKlasa( int x )
: m_x( x )
{ }
void metoda( int a, int b )
{
printf( "[metoda] %d, %d\n", m_x * a, m_x * b );
}
private:
int m_x;
};
void funkcja( CKlasa * klasa, int a, int b )
{
printf( "[funkcja] %d, %d\n", a, b );
}
int main()
{
CKlasa klasa( 2 );
std::function < void( CKlasa *, int, int ) > fnAdres;
fnAdres = & funkcja;
fnAdres( & klasa, 3, 5 );
fnAdres = & CKlasa::metoda;
fnAdres( & klasa, 3, 5 );
int c = 9;
fnAdres =[ & c ]( CKlasa * pKlasa, int a, int b ) { printf( "[wyrazenie lambda] %d, %d\n", a * c, b * c ); };
fnAdres( & klasa, 3, 5 );
return 0;
}
Standardowe wyjście programu:
[funkcja] 3, 5
[metoda] 6, 10
[wyrazenie lambda] 27, 45
Linki zewnętrzne
Wszystkie teksty są chronione prawami autorskimi. Kopiowanie lub rozpowszechnianie treści poza niniejszym serwisem
jest zabronione.
Powyższe ograniczenie nie dotyczy autora opracowania, któremu przysługuje prawo do rozpowszechniania własnego tekstu wedle własnego uznania.