I am just testing with virtual keyword and inheritance concepts in c++. I have written a small program:
#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;
}
What I have done here is I have overloaded a virtual function in parent class in child class! Is this not the right thing to do?
I am getting the compilation errors as below:
"temp10.cc", line 45: Error: Too many arguments in call to "cna_MO::print()".
 
     
     
     
     
     
     
     
    