类有问题。当我将两个数字相乘时,任何随机结果都会出现。

加维特·卡什亚普
#include <iostream>
#include <stdlib.h>

using namespace std;

class area
{
public:
    int l,b;
    int enter()
    {
    cout<<"Enter Length: ";
    cin>>l;
    cout<<"Enter Breadth: ";
    cin>>b;
    }
};

class rectangle : public area

{
public:
    int arr()
    {
        cout<<"Area of Rectangle is: "<<l*b;
    }

};


    int main ()
    {
        area obj;
        rectangle ob;
        obj.enter();
        ob.arr();
    }

我可以输入值,但结果显示为“344765440”。告诉我我的代码是否有问题。而且我也无法正确使用继承。我不能使用“区域”类的对象。

克里斯蒂安·哈克(Christian Hackl)

要解决的第一个基本问题是您的函数不返回任何内容,而是声明为 return int通过将它们转换为void函数来解决这个问题否则,您将遇到未定义的行为

获得看似随机的输出是未定义行为的常见结果,尽管在这种情况下它很可能是由另一个未定义行为实例引起的。

为了找到未定义行为的其他实例,让我们从查看这段代码开始:

   area obj;
    rectangle ob;

这将创建两个不同的area对象

  • 首先,您创建obj,它只是一个area.
  • 其次,您创建ob,它是一个rectangle,因此包含另一个area作为子对象。

l并且b在两个area对象中都未初始化

然后你调用成员函数......

   obj.enter();

这将在第一个对象中设置lb数据成员area

 ob.arr();

这会尝试从第二个对象( 的子对象)中尚未初始化的成员lb数据成员中读取数据尝试从未初始化的读取同样是未定义的行为arearectangleint

您要做的只是创建一个rectangle对象,该对象已经包含area. 难道不是创建一个单独的area对象!

这是您的代码的修改版本,其中包含两个修复程序:

#include <iostream>

class area
{
public:
    int l;
    int b;
    void enter()
    {
    std::cout<<"Enter Length: ";
    std::cin>>l;
    std::cout<<"Enter Breadth: ";
    std::cin>>b;
    }
};

class rectangle : public area

{
public:
    void arr()
    {
        std::cout<<"Area of Rectangle is: "<<l*b;
    }

};


int main ()
{
    rectangle ob;
    ob.enter();
    ob.arr();
}

您可能还想重新考虑您对继承的使用,并回顾您对面向对象理论的理解。请记住,公共继承具有is-a的含义你认为一个矩形一个区域吗?我会说一个矩形一个区域。Has-a 关系应该用成员身份来表达,即通过rectangle拥有一个area数据成员。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

当我使用任何git命令时,都会出现“致命:错误的配置文件行”

来自分类Dev

当我将Windows 8 PC加入域时,都会出现什么变化?

来自分类Dev

如何将两个数字相乘并获得每两个数字相乘的SUM?

来自分类Dev

我在将两个数字与条件运算符(?:)进行比较时遇到问题

来自分类Dev

具有相同元素的两个孩子反应。当我尝试删除任何一个div时,都会删除两个

来自分类Dev

如何建立链接,以便每当我将鼠标悬停在链接上时,鼠标指针的右侧都会出现一个DIV(带有文本)?

来自分类Dev

仅使用位运算将两个数字相乘

来自分类Dev

C#无法将两个数字相乘

来自分类Dev

尝试仅使用加法将两个数字相乘

来自分类Dev

当我尝试将变量放入Xpath时,为什么每次都会出现语法错误

来自分类Dev

为什么每当我将API密钥放入build.gradle时都会出现运行时错误?

来自分类Dev

在将两个数字添加到路径字符串以读取多个文件时出现问题

来自分类Dev

当我将数据从控制器传递给作业时,Laravel 会出现排队问题

来自分类Dev

仅当我们有多个线程时,才会出现非重入问题吗?

来自分类Dev

javaScript将两个数字相乘并将结果显示到第三个html输入中

来自分类Dev

每当我运行我的 AVLTree.java 代码时都会出现 StackOverFlowError

来自分类Dev

只有当空格出现在两个数字之间时,我才能删除它?

来自分类Dev

Java在两个数字之间相乘

来自分类Dev

每当我尝试运行Junit测试用例时,都会出现NullPointer异常

来自分类Dev

每次当我开始新的 Android Studio 项目时都会出现这个错误

来自分类Dev

查找数字1到N的排列,以使排列之间的任何两个数字均不会出现平均值

来自分类Dev

每当我尝试将值添加到已填充的RealmList <MyObject>中时,都会出现java.lang.IllegalStateException

来自分类Dev

每当我尝试获取随机用户时均会出现java.lang.IndexOutOfBoundsException错误

来自分类Dev

使用BigDecimal将两个数字相乘会返回错误的值

来自分类Dev

将两个数字相乘表示为字符串

来自分类Dev

如何将两个数字相乘形成选择选项并求和

来自分类Dev

尝试使用标准乘法和数组将两个数字相乘

来自分类Dev

如何将两个数组与每个元素作为数字相乘C ++

来自分类Dev

PHP类,用于将两个数字相加

Related 相关文章

  1. 1

    当我使用任何git命令时,都会出现“致命:错误的配置文件行”

  2. 2

    当我将Windows 8 PC加入域时,都会出现什么变化?

  3. 3

    如何将两个数字相乘并获得每两个数字相乘的SUM?

  4. 4

    我在将两个数字与条件运算符(?:)进行比较时遇到问题

  5. 5

    具有相同元素的两个孩子反应。当我尝试删除任何一个div时,都会删除两个

  6. 6

    如何建立链接,以便每当我将鼠标悬停在链接上时,鼠标指针的右侧都会出现一个DIV(带有文本)?

  7. 7

    仅使用位运算将两个数字相乘

  8. 8

    C#无法将两个数字相乘

  9. 9

    尝试仅使用加法将两个数字相乘

  10. 10

    当我尝试将变量放入Xpath时,为什么每次都会出现语法错误

  11. 11

    为什么每当我将API密钥放入build.gradle时都会出现运行时错误?

  12. 12

    在将两个数字添加到路径字符串以读取多个文件时出现问题

  13. 13

    当我将数据从控制器传递给作业时,Laravel 会出现排队问题

  14. 14

    仅当我们有多个线程时,才会出现非重入问题吗?

  15. 15

    javaScript将两个数字相乘并将结果显示到第三个html输入中

  16. 16

    每当我运行我的 AVLTree.java 代码时都会出现 StackOverFlowError

  17. 17

    只有当空格出现在两个数字之间时,我才能删除它?

  18. 18

    Java在两个数字之间相乘

  19. 19

    每当我尝试运行Junit测试用例时,都会出现NullPointer异常

  20. 20

    每次当我开始新的 Android Studio 项目时都会出现这个错误

  21. 21

    查找数字1到N的排列,以使排列之间的任何两个数字均不会出现平均值

  22. 22

    每当我尝试将值添加到已填充的RealmList <MyObject>中时,都会出现java.lang.IllegalStateException

  23. 23

    每当我尝试获取随机用户时均会出现java.lang.IndexOutOfBoundsException错误

  24. 24

    使用BigDecimal将两个数字相乘会返回错误的值

  25. 25

    将两个数字相乘表示为字符串

  26. 26

    如何将两个数字相乘形成选择选项并求和

  27. 27

    尝试使用标准乘法和数组将两个数字相乘

  28. 28

    如何将两个数组与每个元素作为数字相乘C ++

  29. 29

    PHP类,用于将两个数字相加

热门标签

归档