Отображаемая стоимость мусора

Я узнал о занятиях, и я наткнулся на это, практикуя. Я смущен тем, почему я получаю вывод мусора на amount и то же самое касается того, почему правильное значение amount отображается заранее.

Где я иду не так?

Я вставил вывод.

#include<iostream>
using namespace std;

class Resort{
 float charges ;
 int days ;
 float amount ;
 float compute() ;
public:
 void getdata();
 void disp();
};

void Resort::getdata(){
 cout<<"\nCharges : ";
 cin>>charges ;
 cout<<"\nNo of days : ";
 cin>>days ;
}

void Resort::disp(){
 cout<<"\nCharges : "<</iostream>
<p> </p>
3 ответа

Чтобы предотвратить значения мусора в переменных, вы можете определить конструктор для класса Resort и указать значения по умолчанию для переменных, так что даже если вы забудете обрабатывать значения переменных, то и значение, инициализированное вами, вы будете отображаться скорее то стоимость мусора. например, вы можете включить такой конструктор в определение класса.

public:
 Resort()
 {
 charges = (float)0.0 ;
 days = 0;
 amount = (float)0.0;
 }

И особенно для вышеуказанного кода вам нужно вызвать функцию вычисления перед вызовом функции для печати значений.


В disp попробуйте напечатать возвращаемое значение compute, но вы забыли добавить туда возвращаемое значение. Вы также получаете двойные распечатки, потому что compute отпечатки к cout.

Совет для будущего - всегда иметь как можно больше предупреждающих предупреждений компилятора (для g++ это -Wall). Выполнение этого, вероятно, заставил бы ваш компилятор предупредить вас о пропущенном возвращаемом значении при compute.


Вы ничего не возвращаете из функции compute, но вы выводите его возвращаемое значение в disp.

Вы, вероятно, хотите что-то вроде:

float Resort::compute(){
 amount = (days*charges) ;
 cout<

licensed under cc by-sa 3.0 with attribution.