Function overloading and function pointers

后端 未结 1 1612
不知归路
不知归路 2021-02-12 22:01

The name of a function is a pointer to the function...
But in case of function overloading the names of two functions are the same...
So which function does the name po

相关标签:
1条回答
  • 2021-02-12 22:26

    It depends on the context; otherwise it's ambiguous. See this example (modified except below):

    void foo(int a) { }
    void foo(int a, char b) { }
    
    int main()
    {
        void (*functionPointer1)(int);
        void (*functionPointer2)(int, char);
        functionPointer1 = foo; // gets address of foo(int)
        functionPointer2 = foo; // gets address of foo(int, char)
    }
    

    You can do this in many ways, but the #1 rule?

    Avoid casts!

    Otherwise you'll break type safety and probably shoot yourself in the foot either then or later.
    (Issues can come up with calling conventions, random changes you don't notice, etc.)

    0 讨论(0)
提交回复
热议问题