虚函数和抽象类

 2023-05-24 08:56:08  阅读 0

在类的继承过程中,常常会遇到类中的函数同名的情况。此时,子类会对父类的重名函数进行重写。但是在更多的情况下我们不会就这样直接对父类的函数进行重写,更多的是在父类被重写的函数类型前加上virtual关键字来进行标识。

 

被virtual修饰词修饰的函数为虚函数,而且虚函数只能够在类中进行申明。且,虚函数的申明和定义中至少有一个存在virtual关键字即可。如下:

 

#include <iostream>
using namespace std;
​
class Father{
public:
    Father(){}
    virtual void show(){
        cout << "hello Father" << endl;
    }
};
​
class Son :public Father{
public:
    Son(){}
    void show(){
        cout << "hello Son" << endl;
    }
};
​
int main(){
    Father father;
    father.show();
    Son son;
    son.show();
    system("pause");
    return 0;
}

 

 

在C++中,除了虚函数外,还存在纯虚函数的概念。

 

虚函数存在实现,但是纯虚函数不存在实现。纯虚函数更多的像是一种标识,也仅仅是作为一种标识。作为标识,是不需要对其进行任何实例化的操作的。而且,子类是无法直接调用父类的纯虚函数的。对于纯虚函数,子类可以进行重写,其作用就是作为标识给子类进行重写。除此之外,存在纯虚函数的类叫做抽象类,抽象类是无法直接实例化对象。

 

如下:

#include <iostream>
using namespace std;
​
class Father{
public:
    Father(){}
    virtual void show() = 0;
};
​
class Son :public Father{
public:
    Son(){}
    void show(){
        cout << "hello Son" << endl;
    }
};
​
int main(){
    Son son;
    son.show();
    system("pause");
    return 0;
}

 

上一篇: String类
下一篇: 类指针
标签:

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码