【发布时间】:2012-02-07 15:54:17
【问题描述】:
我只是在 C++ 中使用虚拟关键字和继承概念进行测试。 我写了一个小程序:
#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()”时参数过多。
【问题讨论】:
-
如果你真的需要
stdio(你提供的代码中不需要),you should includecstdiorather thanstdio.h。 -
另外,你永远不会删除你在 cna_Mo 构造函数中分配的指针。
标签: c++ inheritance virtual