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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
Eiphoria
0 / 0 / 0
Регистрация: 19.12.2010
Сообщений: 21
#1

Конструктор с параметрами - C++

04.06.2011, 15:34. Просмотров 1565. Ответов 8
Метки нет (Все метки)

Не получается конструктор с параметром.. помогите пожалуйста!
вот весь класс, нужно чтобы можно было в main писать вот так например:
Student Petrov("Fam2","Im1","Otch1");
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
 
class Student {
private:
 char *familia;
 char *im;
 char *otchestvo;
 int ekz1;
 int ekz2;
 int ekz3;
 int ekz4;
public:
 
Student ():familia(NULL),im(NULL),otchestvo(NULL),ekz1(0),
ekz2(0),ekz3(0),ekz4(0){}
 
//понятно, что надо здесь описать конструктор с параметром, вот описываю: 
Student (char * familia, char * im, char * otchestvo); //вот описала, а что дальше - не знаю 
 
 
void SetStud(char* fbuf,char* nbuf,char* obuf,int e1,int e2, int e3, int e4);
//void Student(char* fbuf,char* nbuf,char* obuf);
void showStud();
 
char* poisk(){ 
return(familia);}
 
 
char* poiskIm(){
return(im);}
 
char* poiskO(){
return(otchestvo);}
};
 
void Student::showStud(){
printf("\n FIO: %s %s %s ",familia,im,otchestvo);
 
printf("\n Ocenki: %d %d %d %d",ekz1,ekz2,ekz3,ekz4);
}
 
void Student::SetStud(char* fbuf,char* nbuf,char* obuf,int e1,int e2, int e3, int e4){
 familia = (char*)calloc (strlen(fbuf),sizeof(char));
 strcpy (familia,fbuf);
 
 im = (char*)calloc (strlen(nbuf),sizeof(char));
 strcpy (im,nbuf);
 
 otchestvo = (char*)calloc (strlen(obuf),sizeof(char));
 strcpy (otchestvo,obuf);
 
 ekz1=e1;
 ekz2=e2;
 ekz3=e3;
 ekz4=e4;
 }
 
char* zer(char *buf, int kol){
  buf[kol-1]='\0';
  return(buf);
}
 
class Group:public Student{
public:
 
 
 
void SetGroup(char* fbuf,char* nbuf,char* obuf,int e1,int e2, int e3, int e4,float sr){
SetStud(fbuf,nbuf,obuf,e1,e2,e3,e4);
sr1=sr;
}
void ShowGr();
 
 
private:
float sr1;
};
 
void Group::ShowGr(){
showStud();
printf("\n Sr ball: %f \n",sr1);
 
}
 
 
void main(){
 
Student Ivanov;
Ivanov.SetStud("Fam1","Im1","Otch1",4,4,4,4);
 
Student Petrov ("Fam2","Im1","Otch1",4,4,4,4);
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.06.2011, 15:34     Конструктор с параметрами
Посмотрите здесь:

Создать класс. Написать конструктор по умолчанию, конструктор с параметрами. Перегрузить операции «меньше» и «равно» - C++
Помогите пожалуйста, хоть с одним из заданий. 1. Создать класс. Написать конструктор по умолчанию, конструктор с параметрами....

Конструктор с параметрами - C++
Доброе время суток! Суть вопроса вот в чем: Есть класс Game, в котором создаю объект с параметрами. Параметры я пытаюсь передать...

Конструктор с параметрами - C++
Забыл как выводить конструктор с параметрами, пробую так не выходит. #include &lt;iostream&gt; using namespace std; class Thread{ ...

Не отображается конструктор с параметрами - C++
// рншр.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot; #include &lt;iostream&gt; class compyter ...

Никогда не использовать конструктор с параметрами? - C++
Если я захочу чтоб в одном классе был вложен другой класс например есть класс &quot;бумажник&quot; а класс &quot;человек&quot; среди своих данных содержит...

Классы и конструктор по умолчанию/с параметрами - C++
Помогите пожалуйста! Необходимо сконструировать класс с заданным набором свойств. В данном случае, касс содержит следующие поля: продукт,...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
no0ker
101 / 88 / 4
Регистрация: 17.12.2010
Сообщений: 416
04.06.2011, 15:54     Конструктор с параметрами #2
C++
1
2
3
Student (char * familia, char * im, char * otchestvo, int k1, int k2, int k3, int k4){
    SetStud(familia, im, otchestvo, k1, k2, k3, k4);
}
Eiphoria
0 / 0 / 0
Регистрация: 19.12.2010
Сообщений: 21
04.06.2011, 16:08  [ТС]     Конструктор с параметрами #3
спасибо, щас оценю)) тут пока сама вроде написала что-то)

вот так если описать?
компилятор вроде не ругается..



C++
1
2
3
4
5
Student::Student (char *familia, char *im, char *otchestvo)
{ strcpy (Student::familia, familia);
strcpy(Student::im, im);
strcpy(Student::otchestvo, otchestvo);
}
grizlik78
Эксперт С++
1908 / 1440 / 110
Регистрация: 29.05.2011
Сообщений: 2,995
04.06.2011, 16:26     Конструктор с параметрами #4
Цитата Сообщение от Eiphoria Посмотреть сообщение
вот так если описать?
компилятор вроде не ругается..
C++
1
2
3
4
5
Student::Student (char *familia, char *im, char *otchestvo)
{ strcpy (Student::familia, familia);
strcpy(Student::im, im);
strcpy(Student::otchestvo, otchestvo);
}
Компилятор не ругается, но ошибка есть. Прежде чем копировать данные для них надо выделить место. В функции SetStud это делается , а здесь нет. Ну а раз готовая функция уже есть, то чтобы не размножать код логичнее вызвать её, что и было предложено.
Кстати, в SetStud выделяется недостаточно памяти, так как помимо символов строки надо хранить ещё и завершающий строку ноль.
Ну и неплохо бы ещё деструктор объявить, где будет освобождаться выделенная память.
Eiphoria
0 / 0 / 0
Регистрация: 19.12.2010
Сообщений: 21
04.06.2011, 16:37  [ТС]     Конструктор с параметрами #5
ага, понятно... что-то действительно память забыла выделить))

а разве деструктор, если его не описать самим, не будет выполняться автоматически?!
grizlik78
Эксперт С++
1908 / 1440 / 110
Регистрация: 29.05.2011
Сообщений: 2,995
04.06.2011, 16:39     Конструктор с параметрами #6
Деструктор действительно будет создан компилятором автоматически, но только он ничего делать не будет, поскольку он ничего не знает про динамическое выделение памяти.
Eiphoria
0 / 0 / 0
Регистрация: 19.12.2010
Сообщений: 21
04.06.2011, 17:12  [ТС]     Конструктор с параметрами #7
вон оно что))
то есть надо сначала описать сам деструктор (это понятно), а потом для фамилии, имени и отчества сделать free?

извиняюсь за тупые вопросы) просто приходится самой разбираться с классами, а это оказалось сложно для моего мозга))
grizlik78
Эксперт С++
1908 / 1440 / 110
Регистрация: 29.05.2011
Сообщений: 2,995
04.06.2011, 17:31     Конструктор с параметрами #8
Да, free надо вызвать в деструкторе для всех данных, для которых вызывался alloc
Правда в C++ для выделения/удаления существует специальная пара операторов new/delete, но и сишными функциями никто не запрещал пользоваться Только смешивать их не стоит.
А ещё для массивов в современном C++ можно использовать vector, который будет удаляться автоматически. Но в достандартных компиляторах векторов может и не быть.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.06.2011, 17:56     Конструктор с параметрами
Еще ссылки по теме:

Как сделать конструктор и деструктор с параметрами? - C++
как сделать конструктор и деструктор с параметрами?:-| #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; class...

Будет ли определен компилятором конструктор по умолчанию, если есть конструктор с дефолтным параметром? - C++
Добрый день, сразу к делу, есть некий класс class some { int x; public: some(int y = 1) : x(y) {} };

Можно ли использовать конструктор по умолчанию и конструктор инициализации одновременно? - C++
Можно ли использовать конструктор по умолчанию и конструктор инициализации одновременно?

Создать класс "Вектор" и реализовать конструктор по умолчанию, конструктор копирования и деструктор - C++
Всем доброго времени суток! нужна ваша помощь! нужно создать класс вектор и реализовать конструктор по умолчанию, копирования и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Eiphoria
0 / 0 / 0
Регистрация: 19.12.2010
Сообщений: 21
04.06.2011, 17:56  [ТС]     Конструктор с параметрами #9
ясненько))
про delete тоже читала, но как-то free понятнее))

а vector не могу использовать, так как компилирую в bc3.1, а в те времена, как я поняла, до vector'a дело не дошло)))

в общем, еще раз спасибо, вы очень помогли)
Yandex
Объявления
04.06.2011, 17:56     Конструктор с параметрами
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru