Форум программистов, компьютерный форум CyberForum.ru

Почему метод класса затирает статическое поле - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Наследование классов по правилам C++ http://www.cyberforum.ru/cpp-beginners/thread1566580.html
Задание 4. Опишите наследование этих классов по правилам C++. Символ → оз- начает, кто от кого происходит, например, A,B→C означает, что C наследует от A и B. Имеет ли место множественное наследование? Имеет ли место многократ- ное наследование какого-то базового класса? Предложите, где добавить вирту- альное наследование для устранения дублирования данных при наследовании. Опишите порядок...
C++ Преобразовать string в LPBYTE Подскажите, как это сделать? http://www.cyberforum.ru/cpp-beginners/thread1566577.html
C++ Реализовать игру человека и машины по заполнению “Греко-латинского квадрата”
“Греко-латинским квадратом” порядка N называют матрицу (N, N), в каждом столбце, каждой строке и обеих диагоналях которого содержатся все целые числа от 1 до N . Реализовать игру человека и машины по заполнению “Греко-латинского квадрата”. Проигрывает тот, кто первым не сумеет сделать допустимый ход.
C++ Ошибка проектирования класса
Начал писать класс дробей, но сразу же наткнулся на какие-то ошибки, не могу понять как исправить. head.h: #ifndef HEAD_H #define HEAD_H namespace Drobi { class Drobi { private:
C++ Отсортировать массив записей по содержимому поля surname http://www.cyberforum.ru/cpp-beginners/thread1566556.html
Нужно сделать сортировку! Чтобы выведенные фамилии были в алфавитном порядке! Не понимаю как её впихнуть сюда #include <iostream> using namespace std; struct WORKER { char surname; // фамилия char initials; // инициалы char post; // должность int date; // год рождения };
C++ Порядок вычислений C++ Каков порядок вычисления для этого предложения,какие предположения можно сделать о типе операндов?Имеет ли место неоднозначность вычислений? a+=c>b ? (a-=y,z)+5 : c+=4 Вот собственно вопрос,форумчане подробнее

Показать сообщение отдельно
DrOffset
6461 / 3835 / 886
Регистрация: 30.01.2014
Сообщений: 6,630
02.11.2015, 19:25     Почему метод класса затирает статическое поле
Цитата Сообщение от daiwud Посмотреть сообщение
Подскажите пожалуйста, почему тогда b.daiwud1(); при вызове отображает статическую переменную как 2.
Ведь я в конструкторе поставил такое условие b=0;
Т.е. у меня перем. a=4; перезаписалась с первого вызова обратно на 4, а статическая перем. осталась - 2.
Потом при вызове третьего метода статическая переменная перезаписалась на 0 обратно.
1) Сначала вызывались два конструктора для объектов a и b. (строка 48)
2) В каждом из этих конструкторов было присвоено переменной maxim::b - ноль. Сначала конструктор "а" присвоил переменной maxim::b ноль, потом конструктор b присвоил переменой maxim::b ноль. Напоминаю, переменная эта одна и та же. (строка 20)
Идем далее.
3) Вызываем функцию maxim::daiwud() у объекта a. Увеличение maxim::b на 2. Т.е. b = b + 2; (b = 0 + 2) (строка 31). Затем вывод этого значения на экран (2) (строка 34).
4) Вызываем функцию maxim::daiwud1() у объекта b. В ней сначала выводится на экран значение переменной maxim::b, т.е. выводится 2 (строка 40). Затем выполняется увеличение переменной (строка 41) еще раз на 2, т.е. b = b + 2; (b = 2 + 2). В maxim::b число 4.
5) Потом вызывается функция funk();, которая создает локальный объект с, конструктор этого объекта выполняет присваивание нуля переменной maxim::b, затирает ее. Функция c.daiwud1(); вызванная позже, сначала выводит ноль из переменой maxim::b, затем выполняет увеличение на 2, т.е. в переменной maxim::b опять 2.

Цитата Сообщение от daiwud Посмотреть сообщение
Так вот, в чем отличие вызова метода b.daiwud1(); и с.daiwud1(); ?
Отличие в том, что эти функции по разному работают с maxim::b. Одна функция сначала увеличивает значение, потом его печатает, а другая - наоборот, сначала печатает, потом увеличивает.
 
Текущее время: 02:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru