С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
1 / 1 / 2
Регистрация: 23.09.2012
Сообщений: 59

Работа с конструкторами и деструкторами в с++. Приведите пожалуйста какие-то примеры

04.11.2012, 15:50. Показов 2901. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста ! Нужна программа , которая демонстрирует работу конструкторов и деструкторов в с++. Помогите с кодом простенькой программы , не важно , что она будет делать . Заранее спасибо.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.11.2012, 15:50
Ответы с готовыми решениями:

Работа с конструкторами и деструкторами
Кто-нибудь работал с конструкторами и деструкторами?

Какое имя давать БД musql? Приведите примеры какие имена вы даете пожалуйста ))
Сайт на Вордпресс. (навороченный, планируется большой). Я делаю БД даю имя, а перед именем автоматически вставляется домен и нижнее...

Пожалуйста, приведите примеры рекурсивных подпрограмм (желательно с комментариями)
Пожалуйста, приведите примеры рекурсивных подпрограмм (желательно с комментариями)

12
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
04.11.2012, 16:06
Конструкторы и Деструкторы в С++. Не могу разобраться(
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
04.11.2012, 16:23
Для таких случаев самый правильный вариант - это сделать печати в конструкторе и деструкторе. А так же завести какое-нибудь поле в классе, по которому можно было бы различать разные объекты

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
#include <iostream>
 
class T
{
  int x;
public:
  T(int _x) { x = _x; std::cout << "constr " << x << std::endl; }
  ~T() { std::cout << "destr " << x << std::endl; }
};
 
// Глобальные объекты
T glob1(11);
T glob2(12);
 
void func (void)
{
  // Локальные объекты
  T loc1(21);
  T loc2(22);
 
  std::cout << "func" << std::endl;
}
 
int main (void)
{
  std::cout << "main, point1" << std::endl;
  func();
  std::cout << "main, point2" << std::endl;
  return 0;
}
Bash
1
2
3
4
5
6
7
8
9
10
11
constr 11
constr 12
main, point1
constr 21
constr 22
func
destr 22
destr 21
main, point2
destr 12
destr 11
0
1 / 1 / 2
Регистрация: 23.09.2012
Сообщений: 59
04.11.2012, 16:44  [ТС]
Цитата Сообщение от 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
26
27
28
29
30
#include <iostream>
 
class T
{
  int x;
public:
  T(int _x) { x = _x; std::cout << "constr " << x << std::endl; }
  ~T() { std::cout << "destr " << x << std::endl; }
};
 
// Глобальные объекты
T glob1(11);
T glob2(12);
 
void func (void)
{
  // Локальные объекты
  T loc1(21);
  T loc2(22);
 
  std::cout << "func" << std::endl;
}
 
int main (void)
{
  std::cout << "main, point1" << std::endl;
  func();
  std::cout << "main, point2" << std::endl;
  return 0;
}
Bash
1
2
3
4
5
6
7
8
9
10
11
constr 11
constr 12
main, point1
constr 21
constr 22
func
destr 22
destr 21
main, point2
destr 12
destr 11

Спасибо за ответ . Можна к Вам просьбу ? Вот у меня есть код .С конструктором всё работало . Добавила деструктор-выдаёт ошибки (( можете помочь пожалуйста с этой проблемой ?
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
#include "stdafx.h"
#include <iostream>
#include <conio.h>
using namespace std;
class student
{public:
   student(char *, long, float);
   ~student(void);
   void show_student(void);
   int stipendia(float) ;
   long id(void);
private:
   char name [30] ;
   long student_id;
   float stependia;
};
 
student::student(char *name, long student_id, float stipendia)
 
{
   strcpy(student::name, name) ;
   student::student_id = student_id;
   if (stipendia > 800.0)
      student::stipendia = stipendia;
   else 
     student::stipendia= 0.0;
}
void student::~student(void)
{cout<<" Уничтожение данных о студенте "<<name<<endl;
}
void stipendia::show_stipendia(void)
 
{
   cout << "Студент : " << name << endl;
   cout << "Номер студента: " << student_id << endl;
   cout << "Стипедия: " << stipendia << endl;
}
 
void main(void)
{  
   student university("Happy Jamsa", 101, 10101.0);
   university.show_student();
}
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
04.11.2012, 16:51
Легче было сказать, что за ошибки, чем заставлять людей копаться в твоём коде.

Добавлено через 3 минуты
А ещё меня всегда смущали такие вещи
Цитата Сообщение от Anastasia777 Посмотреть сообщение
student::student(char *name, long student_id, float stipendia)
Может гуру и помнят, как различить аргументы метода и поля класса, названные одинаково в этой конструкции, но мне всегда было лень разбираться и я писал
C++
1
student::student(char *Tname, long Tstudent_id, float Tstipendia)
0
1 / 1 / 2
Регистрация: 23.09.2012
Сообщений: 59
04.11.2012, 16:53  [ТС]
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Легче было сказать, что за ошибки, чем заставлять людей копаться в твоём коде.
Я не заставляю никого . Просто очень нужна помощь . На счёт ошибок , то вот :
error C2659: '=' : function as left operand
error C2659: '=' : function as left operand
error C2577: 'student::~student' : a destructor cannot have a return type
error C2653: 'stipendia' : is not a class or namespace name
error C2065: 'name' : undeclared identifier
error C2065: 'student_id' : undeclared identifier
error C2065: 'stipendia' : undeclared identifier
error C2264: 'student::~student' : error in function definition or declaration; function not called
error C2264: 'student::~student' : error in function definition or declaration; function not called
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
04.11.2012, 17:07
в объявлении класса нет функции
C++
1
void stipendia::show_stipendia(void)
Деструктор не должен иметь возвращаемого значения
C++
1
2
3
void student::~student(void)
{cout<<" Уничтожение данных о студенте "<<name<<endl;
}
0
 Аватар для BumerangSP
4311 / 1423 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
04.11.2012, 17:08
Kuzia domovenok, по-моему, удобней всего через this->
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
04.11.2012, 17:10
C++
1
student::student_id = student_id;
Так можно обращаться только к статическим полям класса.
C++
1
2
3
4
5
6
7
8
9
10
student::student(char *name, long student_id, float stipendia)
 
{
   strcpy(this->name, name) ;
   this->student_id = student_id;
   if (stipendia > 800.0)
      this->stipendia = stipendia;
   else 
     this->stipendia= 0.0;
}
0
 Аватар для BumerangSP
4311 / 1423 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
04.11.2012, 17:16
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 "stdafx.h"
#include <iostream>
#include <conio.h>
using namespace std;
class student
{
public:
   student(char *, long, float);
   ~student(void);
   void show_student(void);
   int stipendia(float) ;
   long id(void);
 void  show_stipendia();
private:
   char name[30];
   long student_id;
   float stependia;
};
 
student::student(char *name, long student_id, float stipendia)
 
{
   strcpy(student::name, name) ;
   this->student_id = student_id;
   if (stipendia > 800.0)
      this->stependia = stipendia;
   else 
     this->stependia= 0.0;
}
 student::~student()
{cout<<" Уничтожение данных о студенте "<<name<<endl;
}
void student::show_stipendia(void)
 
{
   cout << "Студент : " << this->name << endl;
   cout << "Номер студента: " << this->student_id << endl;
   cout << "Стипедия: " << this->stependia << endl;
}
 
int main(void)
{  
   student university("Happy Jamsa", 101, 10101.0);
  // university.show_student();  // не описан
 system("PAUSE");
 return 0;
}
0
1 / 1 / 2
Регистрация: 23.09.2012
Сообщений: 59
04.11.2012, 17:16  [ТС]
Цитата Сообщение от Croessmah Посмотреть сообщение
в объявлении класса нет функции
C++
1
void stipendia::show_stipendia(void)
Деструктор не должен иметь возвращаемого значения
C++
1
2
3
void student::~student(void)
{cout<<" Уничтожение данных о студенте "<<name<<endl;
}
А как здесь можно сделать не возвращаемое значение ?
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
04.11.2012, 17:21
Цитата Сообщение от Anastasia777 Посмотреть сообщение
А как здесь можно сделать не возвращаемое значение ?
Не нужно указывать void
0
04.11.2012, 17:38

Не по теме:

Croessmah, надеюсь, она обратила внимание на мой последний пост на 1-ой странице, и вопросы у нее отпадут:)

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

Приведите пожалуйста примеры затухающих и вынужденных колебаний в природе и технике, Укажите их вредное действие
Мало информации нащел на этот вопрос, помогите пожалуйста !!!

Разработать класс "динамический массив целых чисел" с конструкторами и деструкторами
Динамический одномерный массив целых чисел Базовый класс: Конструкторы: по умолчанию, с параметрами и копирования. Деструктор. ...

Приведите пример класса с конструкторами и деструктором
Здравствуйте ! Приведите пример Конструкторы и Деструкторы в С++ ( Напишите по понятнее код пожалуйста ) Я пищу курсовую и мне нужно...

Программы с использование функций. Наведите пожалуйста какие-то маленькие примеры
Я в С++ новичок . Вот дошла до функций , но не могу понять , как именно они работают . Можете привести пожалуйста пару примеров , лёгких...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
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-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru