ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

C如何创建从抽象类继承的对象的动态数组?

2019-10-13 01:10:28  阅读:229  来源: 互联网

标签:c arrays inheritance abstract-class dynamic


我的任务特别指出,我必须创建从抽象类Figure继承的Squares和Triangles的随机数组,然后我必须打印出它们的正方形区域.来自C#,我以为我可以使用一系列对象,但是它们在C中不存在.我不允许使用任何类似矢量的东西.动态创建Figure数组是行不通的,因为显然它不适用于抽象类.我该怎么办?请尽可能简化它.

这是我当前的代码.非常基本,但这只是为了显示我正在尝试做的事情.

#include <iostream>
#include <stdlib.h>

using namespace std;

class Figure
{
    public:
        virtual double square() = 0;
};

class Square : public Figure
{
    public:
        double side;

        double square()
        {
            return side * side;
        }
};

class Triangle : public Figure
{
    public:
        double height;
        double side;

        double square()
        {
            return 0.5 * side * height;
        }
};

void main()
{
    int size = 20;
    Figure *dyn_arr = new Figure[size]; // this doesn't work
    //Also I have to fill it somehow too...
    for (int i = 0; i < size; i++) cout << Figure.square(); //this doesn't    work either
}

解决方法:

首先main必须返回int.然后,您需要创建一个指针数组,该指针数组将显示给抽象类Figure.

图** dyn_arr =新图* [大小];

然后,如果要添加派生类的新对象,则只需像这样添加即可.

dyn_arr [0] = new Triangle(); – &GT这将创建一个新对象,该对象将返回该对象的地址,并且您的数组实际上是指针数组.

最后,如果您想从任何类中调用函数平方,可以这样进行.

dyn_arr [0] – &GT平方();

附:如果您至少没有一点关于指针的经验,这可能会造成混淆.

标签:c,arrays,inheritance,abstract-class,dynamic
来源: https://codeday.me/bug/20191012/1904169.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有