首页 > 编程语言 >C++ 抽象类快速使用

C++ 抽象类快速使用

时间:2024-05-05 13:22:05浏览次数:18  
标签:area int C++ Shape 纯虚 抽象类 快速 Rectangle

在C++中,你可以通过在类定义中使用纯虚函数(pure virtual Function)来创建一个抽象类。这里的“抽象”意味着这个类不能被实例化,即你不能创建这个类的对象。

在C++中,你可以通过在类定义中使用纯虚函数(pure virtual Function)来创建一个抽象类。这里的“抽象”意味着这个类不能被实例化,即你不能创建这个类的对象。

抽象类中至少包含一个纯虚函数。这个纯虚函数是一个不需要被实现的函数,它的存在仅仅是为了确保派生类提供具体的实现。

下面是一个C++抽象类的例子:

class Shape {
protected:
    int width, height;
public:
    Shape( int a = 0, int b = 0 )
    {
        width = a;
        height = b;
    }
    // 纯虚函数
    virtual int area() = 0;
};

在这个例子中,Shape类是一个抽象类,因为它包含一个纯虚函数area()。这意味着Shape不能被实例化,只能被继承。任何继承Shape的类都必须提供area()函数的具体实现。

下面是一个继承Shape类的Rectangle类的例子:

class Rectangle: public Shape {
    public:
    Rectangle( int a = 0, int b = 0 ):Shape(a, b) { }
    int area () {
        return (width * height);
    }
};

在这个例子中,Rectangle类继承了Shape类,并提供了area()函数的具体实现。现在你可以创建一个Rectangle对象并调用它的area()函数。

int main()
{
    Rectangle Rec(10, 7);
    cout << "Total Area: " << Rec.area() << endl;
    return 0;
}

这个程序会输出:Total Area: 70

请注意,抽象类不能被直接实例化,你必须实例化一个派生类的对象。如果尝试实例化一个抽象类的对象,编译器会报错。

标签:area,int,C++,Shape,纯虚,抽象类,快速,Rectangle
From: https://www.cnblogs.com/FBsharl/p/18173430

相关文章

  • C++ lambda的重载
    先说结论,lambda是不能重载的(至少到c++23依旧如此,以后会怎么样没人知道)。而且即使代码完全一样的两个lambda也会有完全不同的类型。但虽然不能直接实现lambda重载,我们有办法去模拟。在介绍怎么模拟之前,我们先看看c++里的functor是怎么重载的。首先类的函数调用运算符是可以重载......
  • 仓储层当前有接口 IRepository<T> 抽象类 BaseRepository<T> 业务逻辑层有抽象类 Bas
    以下是一个简单的C#示例,展示了如何实现不同表对应不同的业务逻辑层和不同的仓储实例://仓储层publicinterfaceIRepository<T>{voidAdd(Tentity);voidUpdate(Tentity);voidDelete(Tentity);TGetById(intid);//其他仓储操作方法...}publ......
  • C++-研讨会(全)
    C++研讨会(全)原文:annas-archive.org/md5/5ba4b421a6ba3d7c3a23406bab386ec0译者:飞龙协议:CCBY-NC-SA4.0前言关于本书C#是一种强大而多才多艺的面向对象编程(OOP)语言,可以打开各种职业道路。但是,与任何编程语言一样,学习C#可能是具有挑战性的。由于有各种不同的资源可用,很难......
  • C++-专家编程(全)
    C++专家编程(全)原文:annas-archive.org/md5/57ea316395e58ce0beb229274ec493fc译者:飞龙协议:CCBY-NC-SA4.0前言学习路径和技术简介。这个学习路径适合谁这个学习路径适合想要提升并学习如何在最新版本的Java中构建健壮应用程序的Java开发人员。这个学习路径涵盖了什......
  • C++-游戏动画编程实用指南(全)
    C++游戏动画编程实用指南(全)原文:annas-archive.org/md5/1ec3311f50b2e1eb4c8d2a6c29a60a6b译者:飞龙协议:CCBY-NC-SA4.0前言现代游戏动画有点像黑魔法。没有太多资源详细介绍如何构建基于轨道驱动的动画系统,或者高级主题,比如双四元数蒙皮。这本书的目标就是填补这个空白。......
  • 【转载】Godot-GDExtension C++ 环境搭建 (Docker+MinGW/跨平台)
    本文原链接见 Godot-GDExtensionC++环境搭建(Docker+MinGW/跨平台)|Convexwf'sKirakiraBlog。Godot在4.X之后推出了GDExtension,通过第三方绑定扩展功能,目前官方支持的语言只有C++。通过使用GDExtensionC++编写扩展插件,可以作为库文件在Godot中交互使用。GDExten......
  • 使用快捷键的方式把多个关键字文本快速替换(快速替换AE脚本代码)
     首先,需要用到的这个工具:度娘网盘提取码:qwu2蓝奏云提取码:2r1z这里做AE(AdobeAfterEffact)里的脚本规则,把英文替换成中文,如下swap=thisComp.layer(“Segmentsettings”).effect("%")(“Checkbox”);if(swap==true){s=thisComp.layer(“Segmentsettings”).effect(“Se......
  • UE4 C++ 杂
    TMap中的Find和FindRef在对蓝图节点进行C++重写时,发现UE对于TMap的Find有很多方式。首先是基础的Find,其就是返回对象类型的指针,如果不存在于TMap中其会返回nullptr接下来是FindChecked,其返回的是对象类型的引用,并且会在内部检测指针是否为空,如果没有会触发断言FindRef其......
  • 第?课——基于矩阵快速幂的递推解法
    第?课——基于矩阵快速幂的递推解法由于中间的数论部分我自己学的很差,没有办法写出清晰的博客来,所以这里跳过了数论部分的博客,来到矩阵快速幂。递推递推是一个非常常用的工具。比如经典的斐波那契数列:\[f(x)=\left\{\begin{array}{**lr**}1&,0\l......
  • c++继承两个类怎么实现
    在C++中,继承两个类可以通过多重继承来实现。多重继承允许一个派生类从多个基类继承属性和方法。以下是一个继承两个类的示例:#include<iostream>//第一个基类classBase1{public:voidmethod1(){std::cout<<"Base1method1"<<std::endl;}};//......