Shablonlar turi parametrlari haqida C ++ da

Bu erda ba'zi savollarni ko'rib chiqayapman va shablonli ob'ekt uchun parametr turi sifatida toifa void sifatida berilgan butun sonni (masalan, o'xshash) o'tgan ba'zi bir namuna kodini topdim. Bu erda men nimani nazarda tutayotganimning misoli:

SomeRandomObject Object;

Kimdir kodning "void (int)" qismini va nima qilganini tushuntirishi mumkin bo'lsa, buni qadrlayman.

5

2 javoblar

Ushbu turdagi " int funktsiyasini oladi va void " funksiyasini qaytaradi.

7
qo'shib qo'ydi
Ok. Yordam uchun minnatdormiz.
qo'shib qo'ydi muallif user865927, manba

Turi bir funktsiya turi. Siz u bilan tanish bo'lmasligingiz mumkin, chunki hozirgacha u faqat markerda ishlatilgan:

typedef int (ft)(void); //Huh?  (raw function type)
typedef ft *fp;         //???   (pointer to function)

typedef int (*fp_oldstyle)(void);//Ahh... (same as fp)

Functions themselves do have types, but since you cannot declare variables of that type or references to it, the only thing you would typically use are pointers, which are declared in the familiar syntax on the last line. For any function int foo(void);, both foo and &foo are interpreted as the pointer, so the "raw" function type ft isn't needed.

Biroq, std :: function , std :: bind va lambdas atrofidagi yangi shablon sehrlari bilan, endi shablon parametrlarida yalang'och funktsiyalarni ko'rish juda ham oddiy narsa .

2
qo'shib qo'ydi
Funktsiya mos yozuvlar bo'lishi mumkin.
qo'shib qo'ydi muallif AraK, manba
Men buni juda kam ko'rdim. Menga tegishli savol: stackoverflow.com/questions/1516958/…
qo'shib qo'ydi muallif AraK, manba
@AraK: Ah, bu to'g'ri: ft & f = foo; f() ;. Rahmat! Garchi juda ko'p ishlatilmasa ham; Men shuni nazarga olamanki, bu murojaatlar qayta topshirilmasligi kerak.
qo'shib qo'ydi muallif Kerrek SB, manba