c++ 虚函数 多态 类继承

本文详细对比了C++和Java在继承机制上的差异,包括权限控制、成员函数继承和多态实现等方面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       c++ 是面向对象语言,面向对象编程的三大特征就是多态、抽象以及继承,c++与java的多态都是通过基类与子类的关系实现,抽象都是基于基类的统一特征来实现。但是c++与java的继承差别还是蛮大的,这里记录一下c++与java的继承之间的区别。

    

      继承讲的是类,java中子类继承基类是通过关键字extend来实现,但是在c++中是通过符号“:”来实现,c++中还有一个重要的区别就是可以控制子类继承的权限,即是public、protected、private,不同的权限,则基类的成员变量在子类的权限是不一样的。但是java只有一种就是public。

   

   类包括成员变量与成员函数,继承中主要多变的就是成员函数的继承,成员函数的继承是实现类多态的重要组件,首先java中基类的成员函数要想在子类中实现,只需要在子类中具有基类相同的函数签名(函数签名:包括函数的名字以及函数的参数),就实现了基类的函数(也可以成为重写了基类函数)。但是c++中是通过在函数签名加上关键字virtual来实现,即成为虚函数,c++中虚函数是实现多态的关键。下面就是c++虚函数以及多态实现的例子。

 

    基类的头文件:

#ifndef FRUIT_H
#define FRUIT_H


class Fruit{

public:

	Fruit(){};
	~Fruit(){};

	void show();
        //实现多态的关键虚函数
        virtual void name();
};
#endif

 

 

    基类的CPP文件

#include "stdafx.h"
#include "Fruit.h"
#include <iostream>


void Fruit::show(){
	name();
	//std::cout << "invoke method is Fruit show()" << std::endl;
}


void  Fruit::name(){
	std::cout << "Fruit" << std::endl;
}

 

 

   子类头文件

#ifndef APPLE_H
#define APPLE_H
#include "Fruit.h"


class apple :public Fruit{

public:
	apple(){};
	~apple(){};
	void showAppleInfo();
        //实现多态的关键虚函数
	virtual void name();
};
#endif

    

 

   //子类CPP

 

#include "stdafx.h"
#include "Apple.h"
#include <iostream>

void apple::showAppleInfo(){
	std::cout << "Thisis Apple class!" << std::endl;
}


void apple::name(){
	std::cout << "Apple" << std::endl;
}

 

 

    

int main(){

	apple a;

	Fruit f;


	Fruit* pF = &a;

	pF->show();

	pF = &f;

	pF->show();
	
	return 0;
}

 

    以下是运行结果:

        Apple

        Fruit

 

   补充说明以上讲的函数,java中称为方法。java的继承实现则不再这里实现

CH341A编程器是一款广泛应用的通用编程设备,尤其在电子工程和嵌入式系统开发领域中,它被用来烧录各种型的微控制器、存储器和其他IC芯片。这款编程器的最新版本为1.3,它的一个显著特点是增加了对25Q256等32M芯片的支持。 25Q256是一种串行EEPROM(电可擦可编程只读存储器)芯片,通常用于存储程序代码、配置数据或其他非易失性信息。32M在这里指的是存储容量,即该芯片可以存储32兆位(Mbit)的数据,换算成字节数就是4MB。这种大容量的存储器在许多嵌入式系统中都有应用,例如汽车电子、工业控制、消费电子设备等。 CH341A编程器的1.3版更新,意味着它可以更多的芯片型号兼容,特别是针对32M容量的芯片进行了优化,提高了编程效率和稳定性。26系列芯片通常指的是Microchip公司的25系列SPI(串行外围接口)EEPROM产品线,这些芯片广泛应用于各种需要小体积、低功耗和非易失性存储的应用场景。 全功能版的CH341A编程器不仅支持25Q256,还支持其他大容量芯片,这意味着它具有广泛的兼容性,能够满足不同项目的需求。这包括但不限于微控制器、EPROM、EEPROM、闪存、逻辑门电路等多种型芯片的编程。 使用CH341A编程器进行编程操作时,首先需要将设备通过USB连接到计算机,然后安装相应的驱动程序和编程软件。在本例中,压缩包中的"CH341A_1.30"很可能是编程软件的安装程序。安装后,用户可以通过软件界面选择需要编程的芯片型,加载待烧录的固件或数据,然后执行编程操作。编程过程中需要注意的是,确保正确设置芯片的电压、时钟频率等参数,以防止损坏芯片。 CH341A编程器1.3版是面向电子爱好者和专业工程师的一款实用工具,其强大的兼容性和易用性使其在众多编程器中脱颖而出。对于需要处理25Q256等32M芯片的项目,或者26系列芯片的编程工作,CH341A编程器是理想的选择。通过持续的软件更新和升级,它保持了现代电子技术同步,确保用户能方便地对各种芯片进行编程和调试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值