Surcharge d'une fonction virtuelle dans une classe enfant

Je suis juste tester avec mot-clé virtuel et concepts héritage en c++.
J'ai écrit un petit programme:

#include<stdio.h>
#include<iostream>

using namespace std;

class cna_MO
{
  public:
    virtual void print()
    {
        cout << "cna_MO" << endl;
    }
};

class cna_bsc:public cna_MO
{
  public:
    void print()
    {
        cna_MO::print();
    }

    void print(int a)
    {
        cout << "cna_BSC" << endl;
    }
};

class cna_Mo
{
    cna_MO *_mo;

  public:
    cna_Mo()
    {
        _mo = new cna_bsc;
    }

    virtual void print(int a)
    {
        cout << "cna_Mo with arg" << endl;
        _mo->print(5);
    }

    virtual void print()
    {
        cout << "cna_Mo" << endl;
        _mo->print();
    }
};

int main()
{
    cna_Mo valid_mo;
    cout << "old case is started" << endl;
    valid_mo.print();
    cout << "new case is started" << endl;
    valid_mo.print(5);
    return 0;
}

Ce que j'ai fait ici est que j'ai surchargé d'une fonction virtuelle dans la classe parent de l'enfant de la classe! Ce n'est pas la bonne chose à faire?

J'obtiens les erreurs de compilation, comme ci-dessous:

"temp10.cc", la ligne 45: Erreur: Trop d'arguments dans l'appel à "cna_MO::print()".

source d'informationauteur Vijay