码迷,mamicode.com
首页 > 编程语言 > 详细

C++\virtual 虚函数、纯虚函数

时间:2017-12-31 10:59:25      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:namespace   函数实现   基类   程序员   aaa   静态   文章   src   指针   

前提摘要:

虚函数联系到多态,多态联系到继承。所以本文中都是在继承层次上做文章。没了继承,什么都没得谈。

虚函数定义:

指向基类指针或引用在操作它的多态类(子类/派生类)对象时,会根据不同的类对象,调用其相应的函数,这个函数就是虚函数。

使用方法:

1.只需要在成员函数声明前使用关键字“virtual”将函数声明为虚函数(子类中可加可不加,没加系统会自动判定为虚函数,为了阅读性,建议加上),而函数实现不需要使用关键字“virtual”。

2.非类的成员函数不能定义为虚函数,类的成员函数中静态成员函数和构造函数也不能定义为虚函数,但可以将析构函数定义为虚函数。实际上,优秀的程序员常常把基类的析构函数定义为虚函数。因为,将基类的析构函数定义为虚函数后,当利用delete删除一个指向派生类定义的对象指针时,系统会调用相应的类的析构函数。而不将析构函数定义为虚函数时,只调用基类的析构函数。

测试代码:

#include <iostream>

using namespace std;
class A
{
public:
    A(){}
    virtual ~A(){}
    virtual void print();
};
void A::print()
{
   cout << "aaaa" << endl;
}
class B:public A
{
public:
    B(){}
    ~B(){}
    void print()
   {
      cout << "bbbb" << endl;
   }
};

int main()
{
    A *a1 = new A;
    A *a2 = new B;
    a1->print();
    a2->print();
    return 0;
}

输出结果:

技术分享图片

纯虚函数:

1、纯虚函数声明如下: virtual void funtion1()=0;

2.有纯虚函数的类是抽象类,不能生成对象,只能派生。

3.定义纯虚函数的类不可实例化;其派生类没有为该纯虚函数定义实现方法也不可实例化;

 

C++\virtual 虚函数、纯虚函数

标签:namespace   函数实现   基类   程序员   aaa   静态   文章   src   指针   

原文地址:https://www.cnblogs.com/flowingwind/p/8152369.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!