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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.81
koderman
2 / 2 / 1
Регистрация: 27.11.2012
Сообщений: 131
#1

Конструкторы и деструкторы - C++

07.12.2012, 19:59. Просмотров 2160. Ответов 40
Метки нет (Все метки)

Прочитал про конструкторы и деструкторы. Пишут что они нужны для инициализации переменных класса. Как они используются я понял, но не понял зачем это нужно. Вместо конструктора можно ведь придумать любую другую функцию и она тоже самое будет делать?
Между строк 59 и 63 я не вижу деструктора.
В строке 8 создаётся конструктор, в строках 18-20 происходит определение конструктора, в строке 58 применяется данный конструктор. Эти строки ведь можно заменить любой другой функцией?

Извиняюсь. Конструкторы служат для создания и инициализации ОБЪЕКТОВ класса.
0
Миниатюры
Конструкторы и деструкторы   Конструкторы и деструкторы  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.12.2012, 19:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Конструкторы и деструкторы (C++):

Конструкторы и деструкторы - C++
Здравствуйте уважаемые программисты, помогите пожалуйста новичку? Не могу разобраться в программе, где смог там написал комментарий и то не...

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

Конструкторы и деструкторы - C++
Привет. Есть структура, содержащая 7 полей, в которые я ввожу значения с клавиатуры. Нужно используя конструкторы и деструкторы...

Конструкторы и деструкторы - C++
Не понимаю, как закончить программу. Написала конструктор и деструктор, хотя он тут и не нужен по идее. Но по заданию сделала. А как...

Конструкторы и деструкторы - C++
Напишите простейшие примеры объявления и определения конструкторов и деструкторов. Желательно, чтобы были примеры с различными типами данных

Конструкторы/Деструкторы - C++
Доброго времени суток! Есть проблемка... после выполнении программа вылетает (без ошибок, просто выбивает в Windows программирую на BC...

40
sovaz1997
CEO SOVAZ Corp.
380 / 226 / 2
Регистрация: 17.12.2011
Сообщений: 819
Записей в блоге: 1
Завершенные тесты: 1
07.12.2012, 20:36 #16
Короче говоря, СКОМПИЛИРУЙ И УБЕДИСЬ, что из main нет доступа к конструктору PRIVATE. Знаешь почему??? - Потому что он не PUBLIC а PRIVATE.
0
ValeryS
Модератор
6679 / 5088 / 475
Регистрация: 14.02.2011
Сообщений: 17,081
07.12.2012, 20:37 #17
Цитата Сообщение от sovaz1997 Посмотреть сообщение
В классе противоречнгсть: конструктор находится в запрещенном режиме-
в данной интерпретации да
но так делают если нельзя создавать объект статически
тогда переопределяют new в public блоке который и вызовет конструктор
в результате
C++
1
A obj;
нельзя
а
C++
1
A *obj=new A;
можно
0
Croessmah
Эксперт CЭксперт С++
13513 / 7671 / 866
Регистрация: 27.09.2012
Сообщений: 18,887
Записей в блоге: 3
Завершенные тесты: 1
07.12.2012, 20:37 #18

Не по теме:

Цитата Сообщение от koderman Посмотреть сообщение
Нельзя создать Объект из main???
В примере из книги какраз из main создаётся объект.
Вы просто не внимательно на код смотрели в книге по другому


Инициализация, присваивание и уничтожение класса
0
sovaz1997
CEO SOVAZ Corp.
380 / 226 / 2
Регистрация: 17.12.2011
Сообщений: 819
Записей в блоге: 1
Завершенные тесты: 1
07.12.2012, 20:38 #19
C++
1
2
3
4
5
6
7
8
9
class A{
private:
    int x;
    A();//конструктор лежит в private
};
int main(){
    A obj;
    return 0;
}
C++
1
2
3
4
5
6
7
8
9
class A{
public:
    int x;
    A();//конструктор лежит в public
};
int main(){
    A obj;
    return 0;
}
Добавлено через 1 минуту
Сравните строчки 2.
0
ValeryS
Модератор
6679 / 5088 / 475
Регистрация: 14.02.2011
Сообщений: 17,081
07.12.2012, 20:40 #20
Цитата Сообщение от koderman Посмотреть сообщение
В примере из книги какраз из main создаётся объект.
в книге у тебя конструктор public
а уCroessmah, private
0
koderman
2 / 2 / 1
Регистрация: 27.11.2012
Сообщений: 131
07.12.2012, 20:42  [ТС] #21
Цитата Сообщение от Croessmah Посмотреть сообщение

Не по теме:


Вы просто не внимательно на код смотрели в книге по другому


Инициализация, присваивание и уничтожение класса
Объект Frisky

Ок. понятно.
0
Миниатюры
Конструкторы и деструкторы  
ValeryS
Модератор
6679 / 5088 / 475
Регистрация: 14.02.2011
Сообщений: 17,081
07.12.2012, 20:45 #22
Цитата Сообщение от koderman Посмотреть сообщение
Объект Frisky
ну а где конструктор описывается в классе ?
уж не в public ли?
0
Croessmah
Эксперт CЭксперт С++
13513 / 7671 / 866
Регистрация: 27.09.2012
Сообщений: 18,887
Записей в блоге: 3
Завершенные тесты: 1
07.12.2012, 20:45 #23

Не по теме:

Цитата Сообщение от koderman Посмотреть сообщение
Объект Frisky
Я Вам про Фому, Вы мне про Ерему


Почитайте еще раз про конструкторы с деструкторами - чем дальше будете заходить, тем больше будете понимать зачем они нужны.
0
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
07.12.2012, 21:41 #24
Цитата Сообщение от sovaz1997 Посмотреть сообщение
КОНСТРУКТОР (именно он) выделяет память под объект!!!
конструктор ничего не выделят, он только инициализирует
0
Croessmah
07.12.2012, 21:48
  #25

Не по теме:

КОНСТРУКТОР (именно он) выделяет память под объект!!!
такого я еще не слышал

0
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
07.12.2012, 21:54 #26
конструктор не занимается распределением памяти, его функция - выполнение кода инициализации
0
Croessmah
07.12.2012, 21:56
  #27

Не по теме:

Цитата Сообщение от Jupiter Посмотреть сообщение
конструктор не занимается распределением памяти, его функция - выполнение кода инициализации
Согласен, не корректно получилось. Вы еще, наверное, первый вариант не видели. С Вами абсолютно согласен, прост еще не от кого не доводилось слышать, что конструктор выделяет память под объект.

0
koderman
2 / 2 / 1
Регистрация: 27.11.2012
Сообщений: 131
05.01.2013, 18:00  [ТС] #28
Ну блин ёмаё. Приложил скрин на котором ответ который я хотел узнать в этой теме. Вы вопрос не могли понять или что? Потому что со мной часто так бывает что сам ответы на вопросы нахожу потому что люди просто мой вопрос понять не могут. Конструктор Нужен просто для того чтобы переменные класса не остались без параметров. Вуаля, вот и всё что я хотел узнать. Так и спросил: для чего нужны конструкторы. Но всёравно спасибо за дискуссию, новое я из неё тоже узнал. В прошлый раз видать или не понял главу или не допонял. Кароче второй раз прочитал. Хорошая книга всётаки: Книга: Освой самостоятельно C++ за 24 часа
Автор: Либерти, Джесс, Хорват, Дэвид
0
Миниатюры
Конструкторы и деструкторы  
taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
05.01.2013, 18:07 #29
Цитата Сообщение от koderman Посмотреть сообщение
Как они используются я понял, но не понял зачем это нужно. Вместо конструктора можно ведь придумать любую другую функцию и она тоже самое будет делать?
Другую функцию надо будет явно вызывать, о чём в большой программе можно забыть, а конструктор - это функция, вызываемая автоматически при создании любого объекта. А если ещё объект создаёт не автор класса, то он может вообще не знать, какую функцию надо вызывать, пришлось бы к каждому классу писать инструкцию, в которой указывать, что надо вызвать при инициализации экземпляра. А конструктор вызывается автоматически, но это тоже просто инициализирующая функция. Это просто такой синтаксис, чтоб гарантировать, что функция инициализации экземпляра будет вызвана для всех экземпляров.
Цитата Сообщение от koderman Посмотреть сообщение
Между строк 59 и 63 я не вижу деструктора.
Явный деструктор нужен далеко не всегда.
1
koderman
2 / 2 / 1
Регистрация: 27.11.2012
Сообщений: 131
05.01.2013, 18:13  [ТС] #30
В книге написано: Объявив конструктор, необходимо объявить и деструктор.
0
05.01.2013, 18:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.01.2013, 18:13
Привет! Вот еще темы с ответами:

Конструкторы и деструкторы - C++
Код: #include <iostream> #include <stdlib.h> #include <conio.h> class complex { private: double im; double...

Конструкторы и деструкторы - C++
Помогите исправить программу. Необходимо реализовать класс с двумя полями, имеющими имена first и second. Обязательно должны...

Конструкторы и деструкторы - C++
Необходимо реализовать класс с двумя полями, имеющими имена first и second. Обязательно должны присутствовать: Для инициализации...

Конструкторы и деструкторы - C++
#include <iostream> #include <Windows.h> class Try { public: void* px; Try() { printf("Try\n"); px=malloc(12); }; ...


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

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Опции темы

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