IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным. В описании темы указываем язык!!!

 
 Ответить  Открыть новую тему 
> C++, Указатель this
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 71
Пол: Мужской
Реальное имя: Max

Репутация: -  0  +



#include <iostream.h>
class cell
{
int static amount;
int number;
double meaning;
public:
cell(double meaning = 0.0)
{
amount++;
this -> number = amount;
this -> meaning = meaning; }
void display (void)
{
cout << "\nnumber = " << this->number;
cout << " amount = " << this->amount;
cout << " meaning = " << this->meaning;
}
};

int cell::Amount = 0;
void main(void)
{ cell A;
A.display();
cell B(200.0);
cell C(300.0);
B.display();
C.display();
}



Выводит результат:

Number = 1 Amount = 1 Meaning = 0
Number = 2 Amount = 3 Meaning = 200 // <-- ??
Number = 3 Amount = 3 Meaning = 300

не понимаю почему во второй строке значение amount равно 3, а не 2, как должно быть?
пробовал на двух разных компиляторах

Сообщение отредактировано: volvo -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Цитата
а не 2, как должно быть?
С какой это радости должно быть 2? Содержимое статической переменной увеличивается на 1 при каждом вызове конструктора (!!!) Сколько конструкторов вызывалось перед
B.display();
?
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 




- Текстовая версия 26.09.2017 23:33
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"