Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/19: Рейтинг темы: голосов - 19, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 19.12.2010
Сообщений: 21

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

04.06.2011, 15:34. Показов 3597. Ответов 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);
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.06.2011, 15:34
Ответы с готовыми решениями:

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

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

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

8
101 / 88 / 7
Регистрация: 17.12.2010
Сообщений: 416
04.06.2011, 15:54
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);
}
1
0 / 0 / 0
Регистрация: 19.12.2010
Сообщений: 21
04.06.2011, 16:08  [ТС]
спасибо, щас оценю)) тут пока сама вроде написала что-то)

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



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);
}
0
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
04.06.2011, 16:26
Цитата Сообщение от 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 выделяется недостаточно памяти, так как помимо символов строки надо хранить ещё и завершающий строку ноль.
Ну и неплохо бы ещё деструктор объявить, где будет освобождаться выделенная память.
1
0 / 0 / 0
Регистрация: 19.12.2010
Сообщений: 21
04.06.2011, 16:37  [ТС]
ага, понятно... что-то действительно память забыла выделить))

а разве деструктор, если его не описать самим, не будет выполняться автоматически?!
0
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
04.06.2011, 16:39
Деструктор действительно будет создан компилятором автоматически, но только он ничего делать не будет, поскольку он ничего не знает про динамическое выделение памяти.
0
0 / 0 / 0
Регистрация: 19.12.2010
Сообщений: 21
04.06.2011, 17:12  [ТС]
вон оно что))
то есть надо сначала описать сам деструктор (это понятно), а потом для фамилии, имени и отчества сделать free?

извиняюсь за тупые вопросы) просто приходится самой разбираться с классами, а это оказалось сложно для моего мозга))
0
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
04.06.2011, 17:31
Да, free надо вызвать в деструкторе для всех данных, для которых вызывался alloc
Правда в C++ для выделения/удаления существует специальная пара операторов new/delete, но и сишными функциями никто не запрещал пользоваться Только смешивать их не стоит.
А ещё для массивов в современном C++ можно использовать vector, который будет удаляться автоматически. Но в достандартных компиляторах векторов может и не быть.
0
0 / 0 / 0
Регистрация: 19.12.2010
Сообщений: 21
04.06.2011, 17:56  [ТС]
ясненько))
про delete тоже читала, но как-то free понятнее))

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

в общем, еще раз спасибо, вы очень помогли)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.06.2011, 17:56
Помогаю со студенческими работами здесь

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

Конструктор с параметрами по умолчанию
пытаюсь создать класс с параметрами по умолчанию(я да, надеюсь, что я не путаюсь в терминах) #include &lt;iostream&gt; class...

Как реализовать конструктор с параметрами?
#include &lt;locale.h&gt; #include &lt;iomanip&gt; using namespace std; class Human { protected: char *surname; char *name; int...

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

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


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод Сайт называется reddit: The Thinkpad X220 Tablet is the best budget school laptop period. Это. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru