具有对象的操作 - 考试 - OOP
Operations with objects - Practicing for the exam - OOP
我解决方案的当前状态
#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;
}
相关文章:
- c++中的oop(密码生成)
- OOP 中的单成员指针
- OOP使用不同的结构与孩子一起构建建议
- OOP 标识派生对象
- 标识符Class_name未定义C++ oop
- 返回类型在 C++ OOP 中是什么意思
- 这里的以下 OOP 结构是什么?
- C++ OOP 分段错误
- 对OOP和过程编程做出这样的肯定是正确的吗
- 我的期末考试遇到了麻烦.代码不断循环回到我的订购菜单,不会显示我的总价
- OOP 和字符串指针的奇怪行为
- 异常成员类 OOP
- 从一个类访问私有字段到另一个与C++中的前一个类无关的私有字段 (OOP)
- 关于默认构造函数,对象初始化/使用C++ OOP
- 气泡排序C++ OOP
- OOP 气泡排序C++程序
- 函数与返回类型 node* 与 C++ 中的 OOP 结合使用
- 使用 C++ 和 OOP 创建面积计算程序
- 指针 OOP 操作
- 具有对象的操作 - 考试 - OOP