- 论坛徽章:
- 1
|
我在学习深入浅出MFC的时候,树上说,把virtual去掉,则程序只会调用CDocument::Serialize()函数,我不明白为什么?
请大家帮助一下,谢谢!
#include <iostream>
#include <string>
using namespace std;
#include "test\test.h"
class CObject
{
public:
//virtual
void Serialize(){cout << "CObject::Serialize() \n\n"; }
};
class CDocument : public CObject
{
public:
int m_data1;
//virtual
void Serialize(){cout << "CDocument::Serialize() \n\n"; }
void func()
{
cout << "CDocument::func()" << endl;
Serialize();
}
};
class CMyDoc : public CDocument
{
public:
int m_data2;
//virtual
void Serialize(){cout << "CMyDoc::Serialize() \n\n"; }
};
int main(int argc, char* argv[])
{
CMyDoc mydoc;
CMyDoc* pmydoc = new CMyDoc;
cout << " #1 testing" << endl;
mydoc.func();
cout << " #2 testing" << endl;
((CDocument*)(&mydoc))->func();
cout << " #3 testing" << endl;
pmydoc->func();
cout << " #4 testing" << endl;
((CDocument)mydoc).func();
return 0;
}
程序执行结果如下:
#1 testing
CDocument::func()
CDocument::Serialize()
#2 testing
CDocument::func()
CDocument::Serialize()
#3 testing
CDocument::func()
CDocument::Serialize()
#4 testing
CDocument::func()
CDocument::Serialize()
Press any key to continue |
|