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

Помогите разобраться с классом (STUDENT). - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Определить сумму элементов, расположенных на побочной диагонали матрицы http://www.cyberforum.ru/cpp-beginners/thread1067355.html
Определить сумму элементов, расположенных на побочной диагонали матрицы и произведение элементов, расположенных на главной диагонали матрицы. Используя указатели.
C++ Как считать файл с русскоязычным текстом? Помогите плиз. Срочно нужно. Вот у меня курсовая. Оно работает вот только не хочет считывать русскоязычный текст с файла. #include <conio.h> #include <iostream> #include <fstream> #include <windows.h> #include <vcl.h> using namespace std; typedef struct{char f; http://www.cyberforum.ru/cpp-beginners/thread1067354.html
Сколько дней потребуется спортсмену, чтобы преодолеть данные расстояния? C++
Контрольное задание: Начав тренировки, спортсмен в первый день пробежал 10 км. Каждый день он увеличивал дневную норму на 10% нормы предыдущего дня. • Какой суммарный путь пробежит спортсмен за 7 дней? • В какой день впервые спортсмен пробежит более 20 км? • В какой день впервые суммарный путь превысит 60 км?
C++ Проверьте, можно ли вычеркиванием букв из одного слова получить другое
Нужна помощь,заранее спасибо!!! Проверьте, можно ли вычеркиванием букв из одного слова получить другое.
C++ Определить является ли номер счастливым. http://www.cyberforum.ru/cpp-beginners/thread1067316.html
Пользователь вводит 6-ти значный номер автобусного билета, определить является ли данный номер счастливым, если счастливыми считать билеты тройки цифр которых являются зеркальными. Например: 123321 - счастливый, 123303 - не счастливый.
C++ Вычисление суммы и определение номеров положительных элементов массива Задан массив целых чисел из 10 элементов.Программа вычисляет сумму положит. элементов И выводит номера положит. элементов. Пожалуйста,помогите написать программу. Экзамен заканчивается,а никак не получается(( подробнее

Показать сообщение отдельно
Hrollo
34 / 34 / 6
Регистрация: 05.11.2013
Сообщений: 147
10.01.2014, 11:09     Помогите разобраться с классом (STUDENT).
Всем привет недавно начал изучать классы и возникло несколько впопросов если не трудно помогите разобраться.(Я попробовал написать класс студент пока что он может только заполнять поля класса и сортировать в нем данные по имени).
1)Как я понял класс должен реализовываться в отдельных файлах(в заголовочном файле должен быть его прототип, а в срр файле должна быть реализация методов).Если в программе будет несколько классов то каждый из них должен реализовываться в отдельном файле или все классы можно реализовать в одном файле?
2)Обязательно ли для классов которые не изменяют значения переменных добавлять спецификатор const?
3)Конструктор с параметрами в основном предназначен для считывания данных из файла или лучше в функции мейн создавать переменные и при помощи них заполнять поля класса?
4)Правильно ли я написал метод setDate?
5)Можете объяснить почему после функции сортировки вызывается деструктор?
Заголовочный файл для класса
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#pragma once
#include <iostream>
#include <cstring>
 
#ifndef _STUDENT_H_
#define _STUDENT_H_
 
using namespace std;
 
class Student
{
private:
    char *name;
    int  score;
public:
    Student(void);
    ~Student(void);
    Student(char*,int);
    void setDate();
    void getDate();
    void sort(Student *cl,int size);
};
 
#endif
Реализация методов

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include "Student.h"
 
 
Student::Student(void)
{
    cout<<"constructor"<<endl;
    name = "";
    score = 0;
}
 
Student::Student(char *n,int sc)
{
    name = n;
    score = sc;
}
 
Student::~Student(void)
{
    cout<<"Destructor"<<endl;
}
void Student::setDate()
{
    char str[25];
    cout<<"Enter name:";
    cin.getline(str,25);
    char *p = new char[strlen(str)+1];
    strcpy(p,str);
    name = p;
    cout<<"Enter score "<<name<<" :";
    (cin>>score).get();
}
void Student::getDate()
{
    cout<<name<<"\t"<<score<<endl;
}
 
void Student::sort(Student *st,int size)
{
    for(int i(0);i<size-1;i++)
    {
        for(int j(i+1);j<size;j++)
        {
            if(strcmp(st[i].name,st[j].name)>0)
                swap(st[i],st[j]);
        }
    }
}
Ф-ция мейн

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <conio.h>
#include "Student.h"
 
using namespace std;
 
int main()
{
    int n=5;
    Student *school = new Student[n];
    for(int i(0);i<n;i++)
    {
        school[i].setDate();
        cout<<endl;
    }
    school[0].sort(school,n);
    //Здесь непонятно почему вызывается деструктор
    for(int i(0);i<n;i++)
        school[i].getDate();
    delete [] school;
    _getch();
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 08:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru