C++ virtual虚函数和override关键字学习,C++实例测试.

一、在分析AndroidR 电池上层部分看到 virtual虚函数和override。

 二、什么是虚函数:

  在面向对象的C++语言中,虚函数(virtual function)是一个非常重要的概念。虚函数是指一个类中你希望重载的成员函数 ,当你用一个基类指针或引用 指向一个继承类对象的时候,调用一个虚函数时, 实际调用的是继承类的版本。

三、实例测试更能直观的理解,在android设备上运行。

   1、virtual_demo.cpp


#include <iostream>
using  namespace std;

 class Parent
 {	  
  public:
	  Parent();
	  virtual ~Parent();
	  void FunctionA();    
  protected:
	  virtual void FunctionB(); 
};
 Parent::Parent()
{
	  printf("Parent Destructor!\n");
}
 Parent::~Parent()
{
	   printf("Parent ~Destructor!\n");
}
void Parent::FunctionA()
{
	  printf("This is parent,functionA\n");
	  FunctionB();
}
/*
void Parent::FunctionB()
{
	  printf("This is parent,functionB\n");
}
*/
class Child:public Parent
{
 public:
     Child();
     virtual ~Child();
     void FunctionB() override; 
};
Child::Child()
{
     printf("Child Destructor!\n");
}
Child::~Child()
{
     printf("Child ~Destructor!\n");
}
void Child::FunctionB()
{
     printf("This is child,functionB\n");
}

 int main(void)
 {
     class Child mChild;
     mChild.FunctionA();
     return 0;
 }

 2、Android.mk



LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := virtual_demo

LOCAL_SHARED_LIBRARIES:=liblog libc libcutils

LOCAL_SRC_FILES := virtual_demo.cpp

 

include $(BUILD_EXECUTABLE)

 3、adb push到机器里面去运行,运行结果如下,可以看到基类里面的FunctionA调用的是子类的FunctionB。

四、参考文章

C++中virtual(虚函数)的用法 - 唯一诺 - 博客园

C++成员函数后面加override_方洪斌的博客-CSDN博客_函数后面加override

C++ Virtual 完美诠释 - 程序员大本营

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值