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

Основы ООП. Создание стека через класс - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ литература стандартной библиотеки C++ http://www.cyberforum.ru/cpp-beginners/thread792606.html
Вопрос - какую именно скачать книгу для изучения всех библиотек и их метадов. Ну может самых важных, нужных. Искал, интернет выдаёт лабуду. Спасибо!
C++ Обратная матрица третьего порядка Необходимо написать программу в С++, для нахождения обратной матрицы третьего порядка http://www.cyberforum.ru/cpp-beginners/thread792595.html
C++ Упорядочить столбцы матрицы по убыванию элементов в k строке
Дана матрица А(n,m). Упорядочить столбцы матрицы по убыванию элементов в k строке, где k – номер строки, который пользователь вводит с клавиатуры.
Сумма членов последовательности C++
не могу посчитать сумму членов А(n)= 1/2^n + 1/3^n # include <iostream> # include <conio.h> # include <math.h> using namespace std; int main() { int n,c; c=0; double d;
C++ в каких либах какая апи-функция находится http://www.cyberforum.ru/cpp-beginners/thread792574.html
знаю есть такой файл сделанный в электронной таблице MS Excel, там описания всех (или почти всех) апишных функций и в какой библиотеке каждая лежит. ни названия не знаю, ни где его взять тоже не знаю... где можно раздобыть сей клад?
C++ Как заменить функцию printf из "С" в "С++"? Я знаю, что саму функцию printf можно заменить функцией cout, но меня интересует как заменить то, что в скобках? printf("%4d",a); printf("\n"); printf("\n\nmax =%4d\n",max); printf("i= %3d, j= %3d\n",i+1,j+1); подробнее

Показать сообщение отдельно
anmartex
...
 Аватар для anmartex
1699 / 1192 / 494
Регистрация: 12.02.2013
Сообщений: 1,978
28.02.2013, 19:29     Основы ООП. Создание стека через класс
Ну, приступим:

Строка 4, 5: нарушение инкапсуляции. Вы открыли сакральную часть класса.
Строка 7: зачем вы передаёте первым параметром стек? Сам класс является стеком (вернее объект данного класса), и именно в него должно быть добавление. Кроме этого, вы передаёте указатель d, который изменяете внутри метода, но из вне он не поменяется. И такой метода в определении стека обычно называют push (но это так, для информации).
Строка 14: аналогично строке 7, а именно, зачем передаёте стек? Объект класса stack и есть сам стек. И опять, значение указателя d поменяется только локально. (Такой метод обычно называют pop)
Строка 20: тут мы уже передаём d по значению. Я логику слабо улавливаю: 1 - зачем его вообще передавать; 2 - почему по значению, а не по указателю?
Строка 23: а какое условие выхода из этого цикла?
Строка 30: вечный вопрос, зачем передаём стек?
Строка 32: 1 - зачем разадресовываем d и присваиваем ему разадресованный next; 2 - а если d уже NULL, а j ещё не 0?; 3 - какой должен быть результат этого поиска?
Строка 35: я понимаю, что вы пользуетесь военным борландом, но всё же main должен что-то вернуть.
Строка 38: вы объявили стек, но даже не задали ему NULL. Прямая тропинка выстрелить себе в ногу. И это кстати будет если вы выберите команду 2 или 3 своей программы.
Строка 52: гениально, вы вспомните про время жизни переменных, правильно, в районе операторных скобок, а что мы видим в строке 54? А мы там видим как такая переменная разадресовывается и её адрес присваивается указателю top.

То, что нужно подтянуть:
  1. Понимание класса в целом. Вы в своём коде просто объединили переменные и функции (и даже не связали их вместе)
  2. Понимание указателя. Вы вообще не ориентируетесь, что такое указатель и как с ним работать.

P.S.: Пожалуйста, только без обид. Вы всё правильно делаете, что стараетесь. Но вы не думали, что может сначала посмотреть, как это реализовывают другие (в книгах, статьях, форумах)?
 
Текущее время: 17:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru