#include "stdafx.h"
#include <iostream>
using namespace std;
class base
{
public:
int func()
{
return 100;
}
private:
};
class derived:public base
{
public:
int func()
{
int tem;
tem=base::func(); //这样做是可以的, 显式调用基类中的方法(不然无限递归调用)
cout<<tem<<endl;
return 0;
}
};
int main()
{
derived obj;
obj.func();
int tem;
tem=base::func(); //这样做是不可以的
cout<<tem<<endl;
system("pause");
return 0;
}
上面代码中第一处的调用是正确的,而第二处的调用是错误的,什么原因呢?
虽然第一处调用中貌似没有使用对象,实际上此处调用是存在调用对象的,因为子类对象包含父类对象,此处调用可以等价于(base*)this->func();