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

Покритикуйте пожалуйста программу - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Поиск элемента в списке. http://www.cyberforum.ru/cpp-beginners/thread362908.html
Есть список, который содержит объекты класа type. Мне нужно найти в этом списке объект, который будет отвечать некоторым условиям. Пробую реализовать это с помощью рекурсии type GetUnit(std::list<type*> List, std::list<type*>::iterator itr) { if ((*itr)) { if <условие> return itr; if (itr != List.end()) {
C++ Предварительное объявление Добрый вечер, Есть файл file.h и file.cpp, в file.cpp я делаю подключение #include <boost/signal.hpp>, не подключаю в хэдер file.h умышленно, потому что этот хэдер подключается в много других файлов, проблема состоит в том чтобы в file.h объявить указатель на сигнал Signal *errorSignal; пробовал сделать предварительное объявление в file.h так: namespace boost { class signal<void... http://www.cyberforum.ru/cpp-beginners/thread362902.html
C++ Введите с клавиатуры данные о температуре воздуха за месяц. Определите, сколько раз за месяц была самая низкая температура?
Собственно, проходим циклы, возникли проблемы с этой задачей. Нуждаюсь в вашей помощи.
getline C++
Я считываю число из входного потока, но дальше из входного потока уже не могу считать строку. Его надо очищать что ли? #include <stdafx.h> #include <iostream> #include <locale.h> #include <string> using namespace std; int main()
C++ С чего начать программирование? http://www.cyberforum.ru/cpp-beginners/thread362877.html
Не нашёл тему, уж извините. Проблема в том, что: Я не знаю программирования. Впринципе. Мне посоветовали С++. Как думаете? Стоит ли начинать именно с него или с чего то другого?
C++ Быстрое чтение и запись файлов Вопрос такой: имеется файл input.txt следующего вида: 5 12 6 7 44 2 1 2 3 4 5 2 343 634 54 1 123 2 345 56 56 11111 2222 333 44 5 подробнее

Показать сообщение отдельно
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
09.10.2011, 01:54     Покритикуйте пожалуйста программу
Цитата Сообщение от MrGluck Посмотреть сообщение
Student(char *n, char *s, char *p, char *d, char *a, int st);
Все параметры типа char* предназначенные только для чтения должны быть объявлены c модификатором const.
C++
1
2
Student(const char *n, const char *s, const char *p, 
        const char *d, const char *a, int st);
Цитата Сообщение от MrGluck Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Student::Student(char *n, char *s, char *p, char *d, char *a, int st)
{
    name = new char [strlen(n) + 1];
    strcpy(name, n);
    surname = new char [strlen(s) + 1];
    strcpy(surname, s);
    patronymic = new char [strlen(p) + 1];
    strcpy(patronymic, p);
    date = new char [strlen(d) + 1];
    strcpy(date, d);
    adress = new char [strlen(a) + 1];
    strcpy(adress, a);
    stip = st;
    is_free = true;
}
дублирование кода так и осталось... Всё это следовало бы переписать вот так
C++
1
2
3
4
5
char* cstrdup(const char *src)
{
    char *dest = new char[ strlen(src) + 1 ];
    return strcpy(dest, src);
}
C++
1
2
3
4
5
6
7
8
9
10
11
Student(const char *n, const char *s, const char *p, 
        const char *d, const char *a, int st)
{
    name = cstrdup(n);
    surname = cstrdup(s);
    patronymic = cstrdup(p);
    date = cstrdup(d);
    adress = cstrdup(a);
    stip = st;
    is_free = true;
}
конструтор копий
C++
1
2
3
4
5
6
7
8
9
10
Student::Student(const Student &s)
{
    name = cstrdup(s.name);
    surname = cstrdup(s.surname);
    patronymic = cstrdup(s.patronymic);
    date = cstrdup(s.date);
    adress = cstrdup(s.adress);
    stip = s.stip;
    is_free = s.is_free;
}
оператор присваивания
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Student &Student::operator = (const Student &s)
{    
    // проверка на присваивание объекта самому себе
    if(&s == this) 
        return *this;
 
    // очищаем выделенную ранее память(можно назвать этот метод как-то более удачно...)
    cleanUp(); 
 
    name = cstrdup(s.name);
    surname = cstrdup(s.surname);
    patronymic = cstrdup(s.patronymic);
    date = cstrdup(s.date);
    adress = cstrdup(s.adress);
    stip = s.stip;
    is_free = s.is_free;
    
    return *this;
}
private метод cleanUp
C++
1
2
3
4
5
6
7
8
void Student::cleanUp()
{
    delete[] name;
    delete[] surname;
    delete[] patronymic;
    delete[] date;
    delete[] adress;
}
деструктор
C++
1
2
3
4
Student::~Student()
{
    cleanUp();
}
 
Текущее время: 19:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru