Консультация № 191379
25.09.2017, 15:58
0.00 руб.
0 1 0
Здравствуйте! Прошу помощи в следующем вопросе: классы.
Есть класс:
Код:
class Student{
private:
char name[]; //поле для имени студента
int group; //поле для номера группы
public:
//конструктор для инициализации полей
Student(char* objName, int objGroup);
};


Реализация метода следующая:
Код:

Student :: Student(char* objName, int objGroup){
strcpy(name,objName);
group=objGroup;
}
}


//int main()
{
Student St("Вася",1,5,5,4); //создан студент Вася, гр.1, баллы
}
[/code]
Программа работает, выводится на экран (при добавлении метода вывода, естественно).
Вопрос - если я таким образом инициализирую строку с именем, не будет ли проблем с памятью? Или мне надо где-то выделить под строку?
Если да, то где (делаю многофайловую сборку) в main.cpp или в файле, где методы прописываются или вообще в описании классов сразу размер массива поставить, например так?
Код:
char name[20]; 

В последнем случае не нравиться то, что не всегда ты заранее знаешь, каков размер строки будет.

Обсуждение

давно
Посетитель
401172
78
25.09.2017, 21:39
общий
Главная функция неверно , исправляю:

Код:
int main()
{
Student St("Вася",1); //создан студент Вася, группа №1
}


P.S Программа то работает, то - нет (появляется мусор в некоторых полях)...
Форма ответа