詳しくC++オーバーライド方法とリロード方法


多くの初心者の友达は、カバー方法と重荷重方法の違いが分からないかもしれませんが、小雨は今日、実例で友达に説明します.
まずカバー方法について、次の例を見てみましょう.
class Animal
{
public:
          void move();
}

class Pig : Animal
{
public:
           void move();
}

class Bird : Animal
{
public:
         void move();
}

void Animal :: move()
{
         std::cout << "    
"; } void Pig :: move() { std::cout << "
"; } void Bird :: move() { std::cout << "
"; }  
 
 
        相信各位看完这个程序就明白的差不多了,我们声明Animal这个类,子类Pig和Bird都继承自Animal类,猪和鸟动的方式自然不同,所以要对父类方法进行覆盖,首先在子类中将要覆盖的方法再声明一次,再实现一次,这就是方法覆盖。 
  
 

       而重载方法则不同,我们对上面的例子中的父类做一下修改:

class Animal
{
public:
          void move();
          void move(int movCount);
 }
void Animal :: move()
{
          std::cout << "    
"; } void Animal :: move(int movCount) { std::cout << " "<< movCount <<"
"; }

    
以上がメソッドリロード、すなわち同じ関数名、パラメータが異なり、異なる機能を実現し、move(int movCount)は
を選択します.
       
では、まとめてみましょう.
・メソッド上書き要求パラメータ署名は一致しなければならないが、メソッド再ロード要求パラメータ署名は一致しなければならない.
・メソッドオーバーライドでは、戻りタイプが一致する必要がありますが、メソッドの再ロードは制限されません.
ありがとう!