Я просто тестирую с помощью концепций виртуального ключевого слова и наследования в С++. Я написал небольшую программу:
#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;
}
Что я здесь сделал, я перегрузил виртуальную функцию в родительском классе в дочернем классе! Это не правильно?
Я получаю ошибки компиляции, как показано ниже:
"temp10.cc", строка 45: Ошибка: слишком много аргументов при вызове на "cna_MO:: print()".