Привет всем прочитавшим
Я самостоятельно изучаю С++ по учебнику.
... и мне задали ряд вопросов, которые я не могу интерпретировать, вот вопросы:
<сильный>4. Измените конструктор в упражнении 3, чтобы он присваивал новый идентификационный номер при установлении каждой переменной. Идентификационный номер должен быть выведен на экран.
**Обратите внимание: в упражнении 3 конструктор класса просто добавлялся в структуру класса и в основном устанавливался для всех частных переменных-членов класса в «0» в этом добавленном конструкторе.
<сильный>5. Добавьте конструкторы в класс упражнения 4. Они должны выводить идентификационный номер при вызове.
<сильный>6. Напишите конструктор, аргументом которого является идентификационный номер. Перегрузите его конструктором (упражнение 5), а затем напишите основную программу для тестирования этого нового конструктора.
** Итак, вопросы: 4 и 5 сбивают меня с толку, поскольку они, кажется, задают одни и те же вопросы (т.е. выводят идентификационные номера), и мне нужно более одного «конструктора», чтобы сделать это (я получаю эту часть).
**Вопрос 6 фактически просит меня перегрузить более одного экземпляра, объявленного в классе, с идентификационным номером в качестве аргумента!!!! Я запутался, потому что в моем учебнике конкретно указано, что у вас не может быть аргумента для конструктора, когда у вас есть массив классов, объявленных в основной программе.
Поэтому, если кто-нибудь может пролить свет на эти вопросы и уточнить, как они будут действовать, я был бы признателен за помощь. Я понимаю, что я мог неправильно интерпретировать вопросы, поэтому я прошу о помощи.
** Обратите внимание: название класса: «классный класс» не идеальное, но это то, что я скопировал из вопроса учебника!
** Также обратите внимание, что я ответил (я думаю!) на упражнение/вопрос 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
в классе::next_student_id=1;
и в конструкторе я добавил этот код: который в основном выводил на экран уникальный идентификатор для каждого экземпляра переменной класса класса:
student_id=next_student_id++;
** cout<<"\nstudent id: "<
Many thanks in advance