16,490
社区成员
![](https://csdnimg.cn/release/cmsfe/public/img/topic.427195d5.png)
![](https://csdnimg.cn/release/cmsfe/public/img/me.40a70ab0.png)
![](https://csdnimg.cn/release/cmsfe/public/img/task.87b52881.png)
![](https://csdnimg.cn/release/cmsfe/public/img/share-circle.3e0b7822.png)
class FBase
{
public:
virtual void Set()
{
info = _T("FBase");
}
void PrintInfo()
{
_tprintf(_T("%s\n"), info);
}
protected:
TCHAR *info;
};
class FChild : public FBase
{
public:
void Set()
{
info = _T("FChild");
}
};
FChild child;
child.Set();
child.PrintInfo();
((FBase)child).Set();
child.PrintInfo();
// ss.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
using namespace std;
class FBase
{
public:
virtual void Set()
{
info = _T("FBase");
}
void PrintInfo()
{
_tprintf(_T("%s\n"), info);
}
protected:
TCHAR *info;
};
class FChild : public FBase
{
public:
void Set()
{
info = _T("FChild");
}
};
int _tmain(int argc, _TCHAR* argv[])
{
FChild child;
child.Set();
child.PrintInfo();
((FBase)child).Set();
child.PrintInfo();
FBase base;
base.Set();
base.PrintInfo();
system("pause");
return 0;
}
FBase* pBase = (FBase*)&child;
FBase* pBase2 = &(FBase)child;
FBase* pBase3 = &(FBase)child;
你会发现这3个值都不相同。而且你也可以在set中把this的值打印出来,由于是单继承,基类对象会和派生类对象地址相同。((FBase)child).Set();
这行居然能通过编译,果然我的语言基础还是不行,求高人解答。