Member 12959299 Ответов: 2

Инициализация конструктора до 0 использование


я не знаю, как использовать инициализацию конструктора до 0 (нуля), как в следующей программе

Что я уже пробовал:

когда я запускаю следующую программу, sa всегда равен 0, чего не должно быть


class bank
{
private:
double a,sa;
char ac,c,s;
public:

void deposit(double amount, char account);
};
void bank::deposit(double amount, char account)
{
a=amount,
ac=account;
if (ac=='s')
{
sa=sa+a;
cout<<sa;

}
}
main()
{
char account;
double amount;

clrscr();
bank b;
cout<<"enter account type: ";
cin>>account;
cout<<"enter amount:" ;
cin>>amount;
b.deposit(amount, account);
getch();
}

но когда я добавлю
/*bank()
{
sa=0;
}*/

как и в следующей программе, она показывает правильный sa, то есть следующая программа показывает правильный результат.
class bank
{
private:
double a,sa;
char ac,c,s;
public:
bank()
{
sa=0;
}
void deposit(double amount, char account);
};
void bank::deposit(double amount, char account)
{
a=amount,
ac=account;
if (ac=='s')
{
sa=sa+a;
cout<<sa;

}
}
main()
{
char account;
double amount;

clrscr();
bank b;
cout<<"enter account type: ";
cin>>account;
cout<<"enter amount:" ;
cin>>amount;
b.deposit(amount, account);
getch();
}


так,
может ли кто-нибудь просветить меня, что толку от этого?:-
bank()
/*{
sa=0;
}*/

2 Ответов

Рейтинг:
6

«_Superman_»

Значение в неназначенной переменной не определено.
Итак, когда вы говорите double sa; значение в sa будет то, что осталось в памяти, выделенной ему.

Когда вы создаете конструктор и выполняете присваивание, значение устанавливается равным 0.

Таким образом, то, как вы показали конструктор, переводится в -

double sa;
sa = 0;


Member 12959299

спасибо вам, сэр/мама

Рейтинг:
17

CPallini

Это называется инициализация элемента данных и это само назначение конструкторов (они должны установить начальный статус объекта).
Неинициализированный элемент данных может содержать мусор.


Member 12959299

спасибо вам, сэр/мама

CPallini

Добро пожаловать.