#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();
而第二处调用显然是没哟调用对象的。
总结一下:
类成员函数的调用必须要有显式的或者隐式的调用对象;
类成员函数不等同于普通函数,
使用类作用域操作符进行成员函数调用问题,布布扣,bubuko.com
原文地址:http://blog.csdn.net/cjc211322/article/details/38516731