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

Что делает конструктор? - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 4.79
Dimka-novitsek
14 / 14 / 0
Регистрация: 26.04.2012
Сообщений: 1,091
27.08.2013, 23:23     Что делает конструктор? #1
Я очень плохо понял вобще. Он вроде помогает создать в памяти место для переменных обьявленых в классе??
В каких слуаях его лучше создавать и использовать?Его лучше иметь для каждого класса?

Где его при этом лучше писать- перед классом, позже или внутри?
Почему его-конструктор- можно писать с параметрами и без параметров?
Какие имено такие параметры и зачем конструктор в себя принимает?

Был ли автоматически создан стандартный конструктор при создани класса или обьекта?
Почему компилятор ругается на создание какого-то деструктора?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class  miclasse
 
 { 
   static const int AA=66;
   int RR;
        public :
   int FF;
   char Simvols[104];
   int Funclasse(int brumm);
 }; 
 
int miclasse::Funclasse(int brumm)
{ 
  brumm=FF+ brumm; cout  <<  " brumm "  << brumm  <<  endl; return 0;  } 
miclasse ::~Funclasse(){} // деструктор
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.08.2013, 23:23     Что делает конструктор?
Посмотрите здесь:

что делает функция? C++
C++ Что это за метод?И что он делает?
C++ Что делает строка?
C++ что делает tellg?
Объясните что именно делает "x%d, y%d: " или что это в даном коде C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
28.08.2013, 21:47     Что делает конструктор?
  #41

Не по теме:

Цитата Сообщение от VLK Посмотреть сообщение
если книга для отдельной категории людей будь добр уведомить об этом.
Типа: "Предупреждать надо..."?

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dimka-novitsek
14 / 14 / 0
Регистрация: 26.04.2012
Сообщений: 1,091
28.08.2013, 21:54  [ТС]     Что делает конструктор? #42
Блинн. Правда и там и там. Если книга непонятна очень многим или большинству, она х... И если она непонятно кому-то конкретно, Не обязательно что он б... (баран). Хотя и вероятно.

Добавлено через 1 минуту
И люди разные. Кто-то поймет одну книгу, кто-то другую.
VLK
28.08.2013, 21:54
  #43

Не по теме:

Цитата Сообщение от alsav22 Посмотреть сообщение
Люди разные и мения у них разные.
В США какая то компания производит детские коляски, но оказалось что они опасные, дети суют пальцы туда куда не надои остаются без пальцев, в США первое что сделали пострадавшие, пошли в суд, получили компенсации, а так же производитель все эти коляски изъял из продажи и все купленные они тоже изъяли, при этом деньги вернули, кто то благодаря такому подходу (МНЕНИЮ) сохранит свои пальцы.
В России же при все тех же проблемах, пострадавшие считают что они сами виноваты, ни куда не обращаются, ну и соответственно все эти опасные коляски у нас продаются.
По телевизору об этом показывали.

Чье мнение выше правильное?


Цитата Сообщение от alsav22 Посмотреть сообщение
Вот есть такая книга: Джесс Либерти "Освой Самостоятельно С++ За 21 День"...
и?

alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.08.2013, 21:58     Что делает конструктор? #44
Цитата Сообщение от VLK Посмотреть сообщение
и?
И всё...
zer0mail
2177 / 1860 / 187
Регистрация: 03.07.2012
Сообщений: 6,618
Записей в блоге: 1
28.08.2013, 21:58     Что делает конструктор? #45
VLK, подай в суд, типа "мне эта книга мозги вывихнула и не предупредила об опасности"
VLK
 Аватар для VLK
192 / 161 / 12
Регистрация: 05.05.2013
Сообщений: 1,221
28.08.2013, 22:00     Что делает конструктор? #46
Цитата Сообщение от zer0mail Посмотреть сообщение
VLK, подай в суд, типа "мне эта книга мозги вывихнула и не предупредила об опасности"
если бы я жил в нормальной стране, я бы это сделал, тут к сожалению, засмеют, заклюют что в принципе показывает данная тема.
zer0mail
2177 / 1860 / 187
Регистрация: 03.07.2012
Сообщений: 6,618
Записей в блоге: 1
28.08.2013, 22:02     Что делает конструктор? #47
VLK, имхо Ваши таланты в области юриспруденции, а не С++
Dimka-novitsek
14 / 14 / 0
Регистрация: 26.04.2012
Сообщений: 1,091
28.08.2013, 22:03  [ТС]     Что делает конструктор? #48
Расчитывать нужо все же на бальшинство людей, а ни отдельных баранов, иначе это тоже маразм.
Ну, дети-это вобще отдельно.

А вот, пример с сайта. Что это за звёздочка? как она работает?
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
class employee 
 
 { 
 public: 
    employee(char *, long, float); //Конструктор 
    void show_employee(void); 
    int change_salary(float); 
    long get_id(void); 
 
 
employee::employee(char *name, long employee_id, float salary) 
 
 { 
    strcpy(employee::name, name) ; 
    employee::employee_id = employee_id; 
    if (salary < 50000.0) 
    employee::salary = salary; 
    else  // Недопустимый оклад 
    employee::salary = 0.0; 
 }
 
 private: 
    char name [64]; 
    long employee_id; 
    float salary; 
 };
VLK
 Аватар для VLK
192 / 161 / 12
Регистрация: 05.05.2013
Сообщений: 1,221
28.08.2013, 22:04     Что делает конструктор? #49
Цитата Сообщение от zer0mail Посмотреть сообщение
VLK, имхо Ваши таланты в области юриспруденции, а не С++
как бы это странно не звучало, но до того как я начал изучать С++, я как раз занимался юриспруденцией (работал в этой сфере)

Цитата Сообщение от Dimka-novitsek Посмотреть сообщение
Ну, дети-это вобще отдельно.
Дети отдельно, а вот подход везде единый.
zer0mail
2177 / 1860 / 187
Регистрация: 03.07.2012
Сообщений: 6,618
Записей в блоге: 1
28.08.2013, 22:04     Что делает конструктор? #50
Dimka-novitsek, до сих пор не курсе, что "звездочка" - это указатель?
Dimka-novitsek
14 / 14 / 0
Регистрация: 26.04.2012
Сообщений: 1,091
28.08.2013, 22:14  [ТС]     Что делает конструктор? #51
Не дочитал еще, правда.

Добавлено через 7 минут
Там напуталось в кодах, ридактировать не могу. У меня страницу порядком глючило.
Dimka-novitsek
14 / 14 / 0
Регистрация: 26.04.2012
Сообщений: 1,091
28.08.2013, 22:17  [ТС]     Что делает конструктор? #52
Вот.
Миниатюры
Что делает конструктор?  
Dimka-novitsek
14 / 14 / 0
Регистрация: 26.04.2012
Сообщений: 1,091
31.08.2013, 23:10  [ТС]     Что делает конструктор? #53
Особое спасибо Evg!! Очень в целом понятный текст. Правда что я примеры разбираю кое-как. Яведь пока ни си, ни си с плюсами почти никак.

Пожалуста,также если кому-то не в лом, распишите пример, включая звездочку, которая указатель. Как будет работать код, если на переменную наме не указывать, а вписать ее без звездочки? Если в лом, то не надо.

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
class employee 
 
 { 
 public: 
    employee(char *, long, float); //Конструктор 
    void show_employee(void); 
    int change_salary(float); 
    long get_id(void); 
 private: 
    char name [64]; 
    long employee_id; 
    float salary; 
 }; 
 
 
 employee::employee(char *name, long employee_id, float salary) 
 
 { 
    strcpy(employee::name, name) ; 
    employee::employee_id = employee_id; 
    if (salary < 50000.0) 
    employee::salary = salary; 
    else  // Недопустимый оклад 
    employee::salary = 0.0; 
 }
Hugra
 Аватар для Hugra
47 / 47 / 1
Регистрация: 18.07.2013
Сообщений: 138
Записей в блоге: 1
31.08.2013, 23:23     Что делает конструктор? #54
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
class employee 
 
 { 
 public: 
    employee(char [], long, float); //Конструктор 
    void show_employee(void); 
    int change_salary(float); 
    long get_id(void); 
 private: 
    char name [64]; 
    long employee_id; 
    float salary; 
 }; 
 
 
 employee::employee(char name[], long employee_id, float salary) 
 
 { 
    strcpy(employee::name, name) ; 
    employee::employee_id = employee_id; 
    if (salary < 50000.0) 
    employee::salary = salary; 
    else  // Недопустимый оклад 
    employee::salary = 0.0; 
 }
Если я правильно тебя понял
Dimka-novitsek
14 / 14 / 0
Регистрация: 26.04.2012
Сообщений: 1,091
01.09.2013, 13:19  [ТС]     Что делает конструктор? #55
А, вот как! Спасибо!!

Добавлено через 3 часа 37 минут
Что не нравится компилятору? Ему непонравлось, тогда я дописал строку ставшую тринадцатой employee(char *, long, float); и всё равно не нравитя, вот

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
#include<iostream>
using namespace std;
#include <string.h> 
 
 class employee 
 
 { 
 public: 
    char name [64]; 
    long employee_id; 
    float salary; 
    void show_employee(void)
    employee(char *, long, float);
 
    { 
       cout << "Имя:  " << name << endl; 
       cout << "Номер служащего: "  << employee_id << endl; 
       cout << "Оклад:  " << salary << endl; 
    }; 
 }; 
 
 employee::employee(char *name, long employee_id,  float salary) 
 
 { 
    strcpy(employee::name, name) ; 
    employee::employee_id = employee_id; 
    if (salary < 50000.0) 
       employee::salary = salary; 
    else  // Недопустимый оклад 
       employee::salary = 0.0; 
 }
 
 void main(void) 
 
 { 
    employee worker, boss; 
    strcpy(worker.name, "John Doe"); 
    worker.employee_id = 12345; 
    worker.salary = 25000; 
    strcpy(boss.name, "Happy Jamsa"); 
    boss.employee_id = 101; 
    boss.salary = 101101.00; 
    worker.show_employee(); 
    boss.show_employee();
    system("pause");
 
 }#include<iostream>
using namespace std;
#include <string.h> 
 
 class employee 
 
 { 
 public: 
    char name [64]; 
    long employee_id; 
    float salary; 
    void show_employee(void)
    employee(char *, long, float);
 
    { 
       cout << "Имя:  " << name << endl; 
       cout << "Номер служащего: "  << employee_id << endl; 
       cout << "Оклад:  " << salary << endl; 
    }; 
 }; 
 
 employee::employee(char *name, long employee_id,  float salary) 
 
 { 
    strcpy(employee::name, name) ; 
    employee::employee_id = employee_id; 
    if (salary < 50000.0) 
       employee::salary = salary; 
    else  // Недопустимый оклад 
       employee::salary = 0.0; 
 }
 
 void main(void) 
 
 { 
    employee worker, boss; 
    strcpy(worker.name, "John Doe"); 
    worker.employee_id = 12345; 
    worker.salary = 25000; 
    strcpy(boss.name, "Happy Jamsa"); 
    boss.employee_id = 101; 
    boss.salary = 101101.00; 
    worker.show_employee(); 
    boss.show_employee();
    system("pause");
 
 }
1>d:\проги\reshenie\employee\employee.cpp(13): error C3646: employee: неизвестный спецификатор переопределения
1>d:\проги\reshenie\employee\employee.cpp(13): error C2091: функция возвращает функцию
1>d:\проги\reshenie\employee\employee.cpp(15): error C2059: синтаксическая ошибка: {
1>d:\проги\reshenie\employee\employee.cpp(15): error C2334: непредвиденные лексемы перед "{"; пропуск вероятного тела функции
1>d:\проги\reshenie\employee\employee.cpp(24): error C2511: employee::employee(char *,long,float): перегруженная функция-член не найдена в "employee"
1> d:\проги\reshenie\employee\employee.cpp(7): см. объявление "employee"
iRomul
 Аватар для iRomul
158 / 99 / 11
Регистрация: 17.10.2012
Сообщений: 474
Завершенные тесты: 1
01.09.2013, 13:20     Что делает конструктор? #56
точка с запятой в 12
Dimka-novitsek
14 / 14 / 0
Регистрация: 26.04.2012
Сообщений: 1,091
01.09.2013, 13:27  [ТС]     Что делает конструктор? #57
Спасибо!!!!!!

Добавлено через 1 минуту
Не придставляю, как она могла отуда деться... Я ведь компилировал ранее, без 13 и 22-31!
Dimka-novitsek
14 / 14 / 0
Регистрация: 26.04.2012
Сообщений: 1,091
01.09.2013, 13:36  [ТС]     Что делает конструктор? #58
1>d:\проги\reshenie\employee\employee.cpp(15): error C2059: синтаксическая ошибка: {
1>d:\проги\reshenie\employee\employee.cpp(15): error C2334: непредвиденные лексемы перед "{"; пропуск вероятного тела функции
1>d:\проги\reshenie\employee\employee.cpp(36): error C2512: employee: нет подходящего конструктора по умолчанию
1>d:\проги\reshenie\employee\employee.cpp(36): error C2512: employee: нет подходящего конструктора по умолчанию

Добавлено через 3 минуты
Я видно плохо понял правила написания и работы с конструктором.

Добавлено через 1 минуту
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
#include<iostream>
using namespace std;
#include <string.h> 
 
 class employee 
 
 { 
 public: 
    char name [64]; 
    long employee_id; 
    float salary; 
    void show_employee(void) ;
    employee(char *, long, float);
 
    { 
       cout << "Имя:  " << name << endl; 
       cout << "Номер служащего: "  << employee_id << endl; 
       cout << "Оклад:  " << salary << endl; 
    }; 
 }; 
 
 employee::employee(char *name, long employee_id,  float salary) 
 
 { 
    strcpy(employee::name, name) ; 
    employee::employee_id = employee_id; 
    if (salary < 50000.0) 
       employee::salary = salary; 
    else  // Недопустимый оклад 
       employee::salary = 0.0; 
 }
 
 void main(void) 
 
 { 
    employee worker, boss; 
    strcpy(worker.name, "John Doe"); 
    worker.employee_id = 12345; 
    worker.salary = 25000; 
    strcpy(boss.name, "Happy Jamsa"); 
    boss.employee_id = 101; 
    boss.salary = 101101.00; 
    worker.show_employee(); 
    boss.show_employee();
    system("pause");
 
 }
iRomul
 Аватар для iRomul
158 / 99 / 11
Регистрация: 17.10.2012
Сообщений: 474
Завершенные тесты: 1
01.09.2013, 13:41     Что делает конструктор? #59
Лишняя точка с запятой в 13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.09.2013, 13:43     Что делает конструктор?
Еще ссылки по теме:

Что это за знак >> прочитал что это сдвиг вправо? что он делает C++
C++ Что делает printf?
C++ Что делает операция new?

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

Или воспользуйтесь поиском по форуму:
zer0mail
2177 / 1860 / 187
Регистрация: 03.07.2012
Сообщений: 6,618
Записей в блоге: 1
01.09.2013, 13:43     Что делает конструктор? #60
Dimka-novitsek, вы читаете сообщения компилятора или воспринимаете их как "набор буковок"?

15 когда копилятор сообщает об ошибке "в строке N", надо смотреть как минимум и предыдущую строку.
36 конструктор по умолчанию - это функция <имя класса>(), т.е. здесь employee(), а такой функции нет.
Yandex
Объявления
01.09.2013, 13:43     Что делает конструктор?
Ответ Создать тему
Опции темы

Текущее время: 22:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru