関数ポインタの詳細な説明: 関数ポインタを使用すると、関数アドレスを変数に格納して、関数の動的な呼び出しおよびコールバック メカニズムを実装できます。関数ポインターの構文: returnType (*functionPointerName)(parameterList); 関数アドレスを関数ポインターに割り当てるには、& 演算子を使用します。関数ポインターを呼び出すには、通常の関数と同じように呼び出します。関数ポインターにより柔軟な呼び出しが可能になり、必要に応じてさまざまな関数を動的に呼び出すことができます。関数ポインタは、特定のイベントが発生したときに関数を呼び出すコールバック メカニズムで使用することもできます。
関数ポインタは強力な C feature を使用すると、関数のアドレスを変数に格納できます。これにより、関数の柔軟な呼び出しやコールバック メカニズムの実装など、多くの利点が得られます。
関数ポインターの構文は次のとおりです。
returnType (*functionPointerName)(parameterList);
たとえば、次は整数を返し、整数を受け入れる関数ポインターの宣言です。整数引数:
int (*funcPtr)(int);
関数のアドレスを関数ポインタに割り当てるには、「&」演算子を使用します:
funcPtr = &functionName;
さて、funcPtr
変数は functionName
関数を指します。
関数ポインタを呼び出すには、通常の関数を呼び出すのと同じように使用します。
int result = funcPtr(arg);
次のコードを考えてみましょう:
void printMessage(const char* message) { cout << message << endl; } void printNumber(int number) { cout << number << endl; } int main() { // 创建指向两个函数的函数指针 void (*printPtr)(const char*); void (*printNumPtr)(int); // 赋值函数指针 printPtr = &printMessage; printNumPtr = &printNumber; // 根据需要调用函数指针 printPtr("Hello world!"); printNumPtr(42); return 0; }
この場合、printPtr
と printNumPtr
を使用すると、関数名をハードコードしなくても、さまざまな関数を柔軟に呼び出すことができます。 。
コールバックは、特定のイベントが発生したときに呼び出される関数です。関数ポインターは、コールバックを実装する効率的な方法を提供します。
次は、関数ポインターを使用してコールバックを実装する例です。
class Button { public: typedef void(*CallbackFunction)(); Button(CallbackFunction callback) : callback(callback) {} void onClick() { if (callback) { callback(); } } private: CallbackFunction callback; }; void onClickCallback() { cout << "Button clicked!" << endl; } int main() { Button button(onClickCallback); button.onClick(); return 0; }
ここで、Button
クラスには、ボタンが押されたときに呼び出されるコールバック関数があります。クリックしました。この例では、onClickCallback
がコールバック関数です。ボタンをクリックすると、コンソールにメッセージが表示されます。
以上がC++ 関数ポインターの説明: 柔軟な呼び出しおよびコールバック メカニズムの詳細ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。