[C++]多态的使用

来源:互联网 发布:阿里云服务器域名备案 编辑:程序博客网 时间:2024/05/16 04:35
#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;
}
要实现多态(动态绑定),必须满足以下之一
1、使用指针调用
2、使用引用调用
 
对多态的使用。
    建立一个父类的对象,它的内容可以是这个父类的,也可以是它的子类的,
当子类拥有和父类同样的函数,当使用这个对象调用这个函数的时候,
定义这个对象的类(也就是父类)里的同名函数将被调用,
当在父类里的这个函数前加virtual关键字,那么子类的同名函数将被调用。
原创粉丝点击