Привет всем, кто читает
Я сам изучаю C ++ из учебника.
... и мне задают серьезный вопрос, который мне трудно интерпретировать,вопросы:
4.Измените конструктор из упражнения 3 так, чтобы он назначал новый идентификационный номер при каждой переменной.Идентификационный номер должен выводиться на экран.
** Обратите внимание: в упражнении 3 просто добавлялся конструктор класса в структуру класса - и в основном все частные переменные-члены класса устанавливались в «0».внутри этого добавленного конструктора.
5.Добавьте конструкторы в класс упражнения 4. Они должны вывести идентификационный номер при вызове.
6.Напишите конструктор, аргументом которого является идентификационный номер.Перегрузите его конструктором (Упражнение 5), а затем напишите основную программу для тестирования этого нового конструктора.
** Итак, вопросы 4 и 5 сбивают меня с толку, поскольку они, кажется, задают вопросодни и те же вопросы (т. е. вывод идентификационных номеров), и мне нужно более одного «конструктора», чтобы сделать это (я получаю эту часть).
** Вопрос 6 Эффективно просит меня перегрузить более одного экземпляраобъявлен из класса с ID номером в качестве аргумента !!!!Я в замешательстве, потому что в моем учебнике конкретно говорится, что вы не можете иметь аргумент для конструктора, если у вас есть массив классов, объявленных внутри основной программы.
Так что если кто-то может пролить свет на эти вопросы иуточнить, как они будут действовать, буду признателен за помощь.Я признателен за неправильное толкование вопросов, поэтому прошу помощи.
** Обратите внимание: название класса: «классная комната» не является идеальным, но это то, что я скопировал свопрос из учебника!
** Обратите внимание, что я ответил (я думаю!) на упражнение / вопрос 4, добавив код, который идентифицирует каждый экземпляр переменной класса.
и соответствующиекод, относящийся к вышеуказанным вопросам:
#include <iostream>
#include <cstdio>
using namespace std;
class classroom{
char name[25];
int student_id;
float grades[10];
float average;
int num_tests;
float letter_grade;
**static int next_student_id;**
public:
void enter_name_id(void);
void enter_grade(void);
void average_grades(void);
void letter_grades(void);
void output_name_id_grade(void);
classroom();
};
**int classroom::next_student_id=1;**
и конструктор:
classroom::classroom(){
int i;
num_tests=0;
**student_id=next_student_id++;**
**cout<<"\nstudent id: "<<student_id;**
average=0.0;
for(i=0;i<10;i++){
grades[i]=0.0;
}
for(i=0;i<27;i++){
name[i]='-';
}
cout<<"\n*****************Finished*****************";
}
И основное объявление программы:
int main()
{
classroom students[3];
//and so on...
}
и код, добавленный длявопрос / Упражнение 4 было:
в структуру класса я добавил следующую закрытую переменную-член:
**static int next_student_id;**
и вне структуры класса я инициализировал статическую переменнуюв 1
int classroom :: next_student_id = 1;
и в конструкторе я добавил этот код: который в основном выводил на экран aуникальный идентификатор для каждого экземпляра classrПеременная класса oom:
student_id = next_student_id ++;
** cout << "\ nstudent id:" <</blockquote>
Большое спасибо взаранее