Pertanyaan Pointer fungsi dengan parameter default dalam C ++


Bagaimana cara C ++ menangani fungsi pointer dalam kaitannya dengan fungsi dengan parameter default?

Jika saya punya:

void foo(int i, float f = 0.0f);
void bar(int i, float f);


void (*func_ptr1)(int);
void (*func_ptr2)(int, float);
void (*func_ptr3)(int, float = 10.0f);

Pointer fungsi mana yang dapat saya gunakan sehubungan dengan fungsi apa?


32
2018-04-05 00:23


asal


Jawaban:


Kedua foo() dan bar() hanya dapat ditugaskan ke func_ptr2.

§8.3.6 / 2:

Argumen default bukan bagian dari jenis fungsi. [Contoh:

int f(int = 0);

void h() {
    int j = f(1);
    int k = f(); // OK, means f(0)
}

int (*p1)(int) = &f; 
int (*p2)() = &f; // error: type mismatch

- contoh akhir]


30
2018-04-05 00:30



Argumen default tidak dapat diberikan untuk fungsi pointer.


0
2017-08-02 16:55