August 04, 2017

Selamün Aleyküm;

C++ 11'le gelen std::function'ın fonksiyon işaretçilerinin görevini gördüğünü farkettim. Muhtemelen ince ayrıntıları vardır lakin hangisini ne zaman kullanmalıyız?

Teşekkürler!

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

August 07, 2017

Merhaba Ibrahim,

std::function gercekten guclu bir sey. Fonksiyon isaretcileri ile ilgilenmen bence cok guzel cunku fonksiyonel programlama cok guclu. Gun gectikce daha cok kullaniliyor ve her yerde kendini gosteriyor.

Ben her yerde std::function kullanmani oneririm eger tabi C++ derleyicin varsa.

std::function ' in en guzel noktasi bu sinifa hem functor, lamdba, mem_fn , serbest fonksiyon , uye fonksiyon her seyi atabilmen,

Benim gordugum en guzel kullanim yolu ise

void
foo ( std::function<void()> fonksiyon )
{
fonksiyon();
}

Burda fonksiyon parametresini


foo({ std::cout << "Merhaba Dunya" ;});


void yardimciFoo()
{
std::cout << "Merhaba Dunya" ;
}
foo ( yardimciFoo )


struct FunctorFoo
{
void operator()()
{
std::cout << "Merhaba Dunya" ;
}
}
FunctorFoo functor;
foo ( functor )


Gibi degisik sekillerde cagirabilirsin. Burda C++ std::function 'u yerine C isaretcilerini kullansaydin biraz daha uzar ve bence daha anlasilmaz olurdu.

Bunun yani sira isaret gosterici dizileri kafami karistirmistir grammer olarak std::function da bu bence daha guzel ve kolay.

Saygilarimla
Erdemdem

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]