64,654
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <iostream>
#include <string>
using namespace std;
class base {
public:
virtual void print() {
cout<<"it is in base::print"<<endl;
}
virtual ~base(){}
};
class son:public base {
public:
virtual void print() {
cout<<"it is in son::print"<<endl;
}
virtual ~son(){}
};
class grandson:public son {
public:
virtual void print() {
cout<<"it is in grandson::print"<<endl;
}
virtual ~grandson(){}
};
void fun(base arge) { //基类对print()的调用
arge.print();
}
void func(base& arge) { //静态多态
arge.print();
}
void func_t(base* arge){ //动态多态
arge->print();
}
int main() {
base a;
son b;
grandson c;
func_t(&a);
func_t(&b);
func_t(&c);
base d;
son e;
grandson f;
func(d);
func(e);
func(f);
return 0;
}
可以参考这里,对多态以及虚函数表的一些观点
http://wenku.baidu.com/view/cf0de18da0116c175f0e48d2.html