java 虚基类_重拾C++之虚函数和虚基类以及抽象类

一、引言

好久没接触过C++了,今天突然要用一点感觉号蛋疼,用惯了python感觉C++一点都不会了。

声明了一个类的对象居然用这种方法,脑子绝对是被驴(python)踢了

class A{

...

}

a=A();//尼玛这都能行,被踢大了

二、虚函数和一般函数

虚函数就是加了vritual关键字的函数,引入虚函数的目的是为了实现多态性(在此为运行时的多态性),即可以通过父类的指针调用子类的对象,从而产生不同的效果。

virtual void show(){

cout<

}

废话不多说,为了展示虚函数和一般函数的区别看看下面一个个例子:

#include

using namespace std;

class A{

private:

int a;

int b;

public:

A(int a,int b){

this->a=a;

this->b=b;

cout<

cout<

}

//定义一个虚函数

virtual void show(){

cout<

}

};

class D:public A{

public:

D(int a,int b):A(a,b){

cout<

cout<

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
虚基类抽象类C++中的两个重要概念,它们有一些区别和联系。 虚基类是被"virtual"继承的类,任何类都可以成为虚基类虚基类的主要作用是解决多重继承中的菱形继承问题,即当一个派生类同时继承了两个基类,而这两个基类又共同继承自同一个虚基类时,通过虚基类可以避免派生类中出现两份虚基类的实例。虚基类没有纯虚函数的要求。 抽象类是至少包含一个纯虚函数的类,它不能被实例化,即不能创建抽象类的对象。抽象类的主要作用是作为基类,为派生类提供接口和规范。派生类必须实现抽象类中的纯虚函数才能被实例化。抽象类可以包含非纯虚函数和数据成员。 以下是一个示例代码,展示了虚基类抽象类的使用: ```cpp // 虚基类 class Base { public: int x; }; // 派生类1 class Derived1 : virtual public Base { public: int y; }; // 派生类2 class Derived2 : virtual public Base { public: int z; }; // 最终派生类 class FinalDerived : public Derived1, public Derived2 { public: int sum() { return x + y + z; } }; // 抽象类 class AbstractClass { public: virtual void pureVirtualFunction() = 0; void nonVirtualFunction() { // 非纯虚函数的实现 } }; int main() { FinalDerived obj; obj.x = 1; obj.y = 2; obj.z = 3; int result = obj.sum(); // 输出:6 AbstractClass* ptr; // ptr = new AbstractClass(); // 错误,抽象类不能被实例化 // 抽象类可以作为指针类型使用 ptr->pureVirtualFunction(); // 调用派生类中的实现 return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值