C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++のメンバー関数への関数ポインタ


C ++では、クラスまたは構造体のメンバー関数を処理するときの関数ポインターは、オブジェクトポインターまたはthis呼び出しを使用して呼び出されます。そのクラス(または派生物)のメンバーは、タイプセーフであるため、そのタイプのポインターを使用してのみ呼び出すことができます。

#include <iostream>
using namespace std;
class AB {
   public:
      int sub(int a, int b) {
         return a-b;
      }
      int div(int a, int b) {
         return a/b;
      }
};
//using function pointer
int res1(int m, int n, AB* obj, int(AB::*fp)(int,int)) {
   return (obj->*fp)(m,n);
}
//using function pointer
int res2(int m, int n, AB* obj, int(AB::*fp2)(int,int)) {
   return (obj->*fp2)(m,n);
}
int main() {
   AB ob;
   cout << "Subtraction is = " << res1(8,5, &ob, &AB::sub) << endl;
   cout << "Division is = " << res2(4,2, &ob, &AB::div) << endl;
   return 0;
}

出力

Subtraction is = 3
Division is = 2

  1. C++のNULLオブジェクトポインタでメンバー関数を呼び出す

    クラスメンバー関数はNULLオブジェクトポインタを使用して呼び出すことができます。 注 −これは未定義の動作であり、プログラムの実行についての保証はありません。実際の結果は、使用するコンパイラによって異なります。 これを実証するプログラムは次のとおりです。 例 #include <iostream> using namespace std; class Demo {    public :    void fun() {       cout << "This member functi

  2. 配列をC++関数に渡す

    C ++では、配列全体を引数として関数に渡すことはできません。ただし、インデックスなしで配列の名前を指定することにより、配列へのポインタを渡すことができます。 1次元配列を関数の引数として渡したい場合は、次の3つの方法のいずれかで関数の仮パラメーターを宣言する必要があります。3つの宣言メソッドはすべて、整数ポインターが実行されることをコンパイラーに通知するため、同様の結果を生成します。受け取る必要があります。 配列を関数に渡す方法は3つあります- ポインタとしての正式なパラメータ void myFunction(int *param) {    // Do so