Sobes.tech
Junior

Vai C++ var deklarēt funkcijas norādes?

sobes.tech AI

Atbilde no AI

Jā.

// Funkcijas norādes definīcija, kas pieņem divus int un atgriež int
int (*ptr_uz_ADD)(int, int);

// Piemērs funkcijai, kas atbilst parakstam
int ADD(int a, int b) {
    return a + b;
}

// Funkcijas adreses piešķiršana norādei
ptr_uz_ADD = &ADD;

// Funkcijas izsaukšana caur norādi
int rezultāts = ptr_uz_ADD(5, 3); // rezultāts būs 8

Arī, izmantojot typedef vai using:

// Izmantojot typedef
typedef int (*OperationFunc)(int, int);

OperationFunc ptr_uz_sub;

int SUB(int a, int b) {
    return a - b;
}

ptr_uz_sub = ⊂
int rezultāts_sub = ptr_uz_sub(10, 4); // rezultāts būs 6

// Izmantojot using (C++11 un jaunākas)
using OperationFunc2 = int (*)(int, int);

OperationFunc2 ptr_uz_mul;

int MUL(int a, int b) {
    return a * b;
}

ptr_uz_mul = &MUL;
int rezultāts_mul = ptr_uz_mul(2, 7); // rezultāts būs 14

Funkcijas norādes var tikt izmantotas kā funkciju argumenti (callback funkcijas) vai atgriešanas vērtības.