具有对象的操作 - 考试 - OOP

Operations with objects - Practicing for the exam - OOP

本文关键字:考试 OOP 操作 对象      更新时间:2023-10-16

我解决方案的当前状态

#include <iostream>
class money {
        int kn, lp;
public:
        void add(int kn, int lp){
                this->kn+=kn;
                this->lp+=lp;
                if(this->lp>=100){
                        this->kn++;
                        this->lp-=100;}
        }
        void print() {
                std::cout<<this->kn<<" kuna";
                if(this->lp!=0) std::cout<<", "<<this->lp<<" lipa";
        }
};
int main () {
        //money a(7, 50) , b(3, 70) , c(2, 80);
        money a;
        //simplified
        a.add(3, 70);
        a.add(2, 80);
        a.print();
}

任务要求我扩展课程,以便以下程序正确添加金钱并打印出来。http://prntscr.com/711bs5

我简化了任务,因为我仍然可以解决最终解决方案。但是我不知道为什么要打印垃圾?在解决这个问题之后。

有人可以在简短的提示中帮助我,正确解决任务所需的需要。显然,当我启动这些对象时,我应该添加到对象a,来自对象b和c的值。但是我不知道该怎么做,我错过了一些课程。

编辑:为什么人们会下调?我想念什么吗?太微不足道的问题?标题不好?

第一部分:初始化。

在第二部分中,您必须创建一种方法,以另一个类资金作为参数的另一个实例,并将kn和ln的值添加到现有的。

@karma:

这不是一个公式,但是没有检查必须如何输入货币价值。

我认为最聪明的事情是在启动对象(在构造函数中)时检查正确的行为,以便对象只能形式:

0&lt; = lp&lt; = 99;

edit2:

您如何创建此方法?

对于那些,由于您的添加方法已经存在,因此可以超载。这意味着您可以创建具有相同名称和返回类型的方法,但具有不同的参数。

因此,如前所述,您可以创建另一种方法并将货币实例传递给它。如果您不明白这一点,那么您应该真正了解方法的工作原理以及如何创建它们,并且基本上可以将任何东西传递给它们(不仅是原始类型)。

您需要在使用变量之前初始化这些变量。当您使用变量而不初始化变量时,您会得到垃圾值。例如,这里:

this->kn+=kn;
this->lp+=lp;

他们俩都不是原始化的。

对于类的数据成员,您可以使用构造函数初始化:

money()
{
    kn=0; lp=0;
}

所以,您的代码现在变为:

#include <iostream>
class money {
int kn, lp;
public:
money()
{
    kn=0; lp=0;
}
void add(int kn, int lp){
    this->kn+=kn;
    this->lp+=lp;
    if(this->lp>=100){
        this->kn += this->lp/100; this->lp %= 100;}
}
void print() {
    std::cout<<this->kn<<" kuna";
    if(this->lp!=0) std::cout<<", "<<this->lp<<" lipa";
}
};
int main () {
//money a(7, 50) , b(3, 70) , c(2, 80);
money a;
//simplified
a.add(3, 70);
a.add(2, 80);
a.print();
return 0;
}