C++の基礎:クラス内メソッドを学ぶ

提供: Support
移動先: 案内検索

概要

オブジェクト指向プログラミングとは、データ(オブジェクトの属性プロパティ)やコードブロック(オブジェクトのメソッド関数)を含むオブジェクトを統合する方法です。これらの属性やメソッドは、クラスに属する変数や関数であり、一般的には「クラスメンバ」と呼ばれています。


クラス内メソッドをどのように定義するのか? クラスのメソッドをクラスの中で定義するのか、クラスの外で定義するのか? この記事では、クラス内のメソッドを定義する方法について説明いたします。


クラス内のメソッドとは、この所属するクラスの内部または外部で動作する関数のことです。クラス内のメソッドは、「クラスの内側」と「クラスの外側」の2つの方法で定義されます。それらを見てみましょう。


1. クラス内でのメソッドの定義


ここでは、クラス内部のメソッドを宣言・定義していきます。以下のコード例のように人間を表すTHumanクラスを定義し、それが何であるかを示すInfo()メソッドをクラス内部に定義してみましょう。

class THuman  
{         
  public:   
    void info()  // Method definition inside
    {  
      std::cout << "I am a Human\n";
    }
};

上記のコードでは、THumanがクラスであり、info()がこのクラスのメソッドです。

以下の完全なコード例のように、このTHumanクラスから新しいオブジェクトworkerを作成でき、そのオブジェクトはinfo()メソッドを含むクラスのすべてのプロパティとメソッドを持ちます。そしてinfo()メソッドを使用してこのクラスから情報を取得できます。

class THuman  
{         
  public:   
    void info()  // Method definition inside
    {  
      std::cout << "I am a Human\n";
    }
};
 
int main() 
{
  THuman worker;  // Creating an object by using Class type
  worker.info();  // Calling the method
 
  return 0;
}


2. クラス外でのメソッドの定義


この方法では、クラスの外側でメソッドを定義し、その宣言をクラスの内側に記述します。関数の定義と宣言について詳しく知りたい方は、こちらの記事をご覧ください。今度は関数を外部で定義してみましょう。そのためには、以下のコード例のようにクラスの内部で宣言します。

class THuman  
{         
  public:   
    void info();  // Method decleration, will be defined outside
};

このクラスにはinfo関数がありますが、この関数は定義されていませんので、この関数が何をするかを示すコードブロックが必要です。この関数をクラスのメンバとして定義するには、関数がクラスのメソッドであることを示すために、「::」演算子を使用する必要があります。一般的な形式では、クラスのメソッドである関数は、以下の形式のように 「::」演算子を使用して記述します。

<return type> <class name> :: <function name and parameters>
{  
   //statement
}

したがって、info()メソッドは、以下のコード例のように外部で宣言および定義する必要があります。

void THuman::info()  // Method declaration outside
{  
   // Method definitions here
   std::cout << "I am a Human\n";
}

以下は、クラスの外でメソッドを宣言した完全なコード例です。

class THuman  
{         
  public:   
    void info();  // Method declaration, will be defined outside
};
 
void THuman::info()  // Method declaration outside
{  
   // Method definitions here
   std::cout << "I am a Human\n";
}
 
int main() 
{
  THuman worker;  // Creating an object by using Class type
  worker.info();  // Calling the method
 
  return 0;
}


3. クラス内でのパラメータ付きメソッドの定義


クラスの中でパラメータを指定してinfo()メソッドを定義することができます。 以下のコード例では、このinfo()メソッドで指定された名前を表示します。

class THuman  
{         
  public:   
    void info(string name)  // Method definition inside
    {  
      std::cout << "This is " << name << '\n';
    }
};
 
int main() 
{
  THuman worker;  // Creating an object by using Class type
  worker.info("John");  // Calling the method with a parameter
 
  return 0;
}


4.クラス外のパラメータを使用してメソッドを定義


クラスの外部のパラメータを使用してinfo()メソッドを定義できます。以下のコード例では、このinfo()メソッドで指定された名前を出力します。

class THuman  
{         
  public:   
    void info(string name);  // Method declaration, will be defined outside
};
 
void THuman::info(string name)  // Method declaration outside
{  
   // Method definitions here
   std::cout << "This is " << name << '\n';
}
 
int main() 
{
  THuman worker;  // Creating an object by using Class type
  worker.info("John");  // Calling the method with a parameter
 
  return 0;
}

関連情報