Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.01.2014, 21:03   #1
Karl__
Пользователь
 
Регистрация: 01.12.2013
Сообщений: 40
Восклицание С++ Конструкторы и детсрукторы

Нужна помощь какие-либо идеи и подсказки от знающих толк в классах в С++
Задание было такое Составить описание класса для представления комплексных чисел. Обеспечить выполнение операций сложения, вычитания и умножения комплексных чисел.
Теперь нужно для класса задать конструктор (для выделения памяти, открытия файлов, задания начальных значений при необходимости) и деструктор(для освобождения памяти, закрытия файлов, печати последних значений). Теорию я знаю, а вот практически как именно в этом задании должно быть, помогите с примером хотя бы.
Выделение и освобождение памяти более менее понятно в теории конечно, а вот остальные задания тут применимы?
Код программы вот:
Код:
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
class Komplecs{
int a,b;
public:
 void Vvod();
 void Slog();
 void Umnog();
 void Vich();
};
void Komplecs::Vvod()
{
cout<<"Введите действительную часть числа";
cout<<endl;
cin>>a;
cout<<"Введите мнимую часть числа";cout<<endl;
cin>>b;
cout<<endl;cout<<"Число равно  ";
cout<< a<<"+i*"<< b;cout<<endl;
}
void Komplecs::Slog()
{int t,d,x,z;
cout<<"Введите действительную часть первого числа";
cout<<endl;
cin>>t;
cout<<"Введите мнимую часть первого числа";cout<<endl;
cin>>d;
cout<<endl;
cout<<"Введите действительную часть второго числа";
cout<<endl;
cin>>x;
cout<<"Введите мнимую часть второго числа";cout<<endl;
cin>>z;
a=(t+x);
b=(d+z);
cout<<"Сумма равна";
cout<<endl;
cout<< a<<"+i*"<< b; cout<<endl;
}
void Komplecs::Umnog()
{
int t,d,x,z;
cout<<"Введите действительную часть первого числа";
cout<<endl;
cin>>t;
cout<<"Введите мнимую часть первого числа";cout<<endl;
cin>>d;
cout<<endl;
cout<<"Введите действительную часть второго числа";
cout<<endl;
cin>>x;
cout<<"Введите мнимую часть второго числа"; cout<<endl;
cin>>z;
a=(t*x-d*z);
b=(t*z+d*x);
cout<<"При умножении число равно";cout<<endl;
cout<< a<<"+i*"<< b;cout<<endl;
}
void Komplecs::Vich()
{
int t,d,x,z;
cout<<"Введите действительную часть первого числа";
cout<<endl;
cin>>t;
cout<<"Введите мнимую часть первого числа";cout<<endl;
cin>>d;
cout<<endl;
cout<<"Введите действительную часть второго числа";
cout<<endl;
cin>>x;
cout<<"Введите мнимую часть второго числа";cout<<endl;
cin>>z;
a=(t-x);
b=(d-z);
cout<<"При вычитании число равно";cout<<endl;
cout<< a<<"+i*"<< b;cout<<endl;
}
void main()
{ 
	setlocale (LC_ALL, "Russian");
	Komplecs c;int v;
v=1;
while(v!=0)
{
cout<<endl;
cout<<"1-Ввод числа";cout<<endl;
cout<<"2-Сложение чисел"; cout<<endl;
cout<<"3-Умножение чисел";cout<<endl;
cout<<"4-Вычитание чисел";cout<<endl;
cout<<"0-Выход";cout<<endl;
cin>>v;
if (v==1)
{
c.Vvod();
}
if (v==2)
{
c.Slog();
}
if (v==3)
{
c.Umnog();
}
if (v==4)
{
c.Vich();
}
} }
Karl__ вне форума Ответить с цитированием
Старый 28.01.2014, 21:37   #2
Ezhik Kihze
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 639
По умолчанию

Для класса комплексных чисел традиционным является конструктор с двумя параметрами - вещественная и мнимая часть.
ICQ: 677936656 Gmail: ekEmbed@gmail.com
Ezhik Kihze вне форума Ответить с цитированием
Старый 28.01.2014, 21:45   #3
alekopoko
Форумчанин
 
Регистрация: 03.04.2013
Сообщений: 167
По умолчанию

Идентификатор(имя) конструктора совпадает с именем класса.
У конструктора нет возвращаемого типа - никаких void Komplecs() {}

Имя деструктора совпадает с именем класса и перед идентификатором деструктора ставим тильду(~).
У деструктора нет параметров - в круглых скобках пусто.

Напиши сначала в теле конструктора и деструктора обычный вывод строчки - "вызов деструктора" и аналогично с конструктором,чтобы понять когда они вызываются, а потом пляши дальше и пиши в их определении ,то что надо по заданию.

Если я не ошибаюсь конструктор вызывается при инициализации объекта, а деструктор когда заканчивается область видимости объекта.

P.S. : если ты хорошо понял теорию так бери и печатай код в чем проблема то?Если не знаешь что печатать значит плохо понял теорию..или в теории не было примера с кодом?

Последний раз редактировалось alekopoko; 28.01.2014 в 21:48.
alekopoko вне форума Ответить с цитированием
Старый 28.01.2014, 22:17   #4
Karl__
Пользователь
 
Регистрация: 01.12.2013
Сообщений: 40
По умолчанию

я даже не догоняю куда их помещать в этом коде, сколько их должно быть и где расположены
Karl__ вне форума Ответить с цитированием
Старый 28.01.2014, 22:54   #5
alekopoko
Форумчанин
 
Регистрация: 03.04.2013
Сообщений: 167
По умолчанию

так стоп.Этот код не ты написал чтоли? Вот облом.А я старался объяснить грамматику конструктора и деструктора т.к. думал что ты это все сам написал=)
Да нельзя же так.Брать чужой код и пытаться влепить в него что-то и потом типо может прокатить и может все заработает как надо.Это не программирование.
alekopoko вне форума Ответить с цитированием
Старый 28.01.2014, 23:08   #6
Karl__
Пользователь
 
Регистрация: 01.12.2013
Сообщений: 40
По умолчанию

так подожди те, я не говорю что код чужой, без помощи естественно не обошлось, потому что сразу сложно без опыта написать работающую прогу по теме, в классах я впринципе разобрался, как их создавать и т.д. а вот с дополнительным заданием загвоздка, я примерно представляю где расположить конструктор, но боюсь наделать ошибок, потому что примеры которые рассматривал там маленькие программы, а тут объемный код, да и задание дальше не очень понятно, в смысле освобождение и выделение памяти, а дальше
Karl__ вне форума Ответить с цитированием
Старый 09.02.2014, 16:36   #7
vvmcpp
Форумчанин
 
Аватар для vvmcpp
 
Регистрация: 11.12.2010
Сообщений: 116
По умолчанию

пример класса с именем А, конструктором и деструктором:

Код:
class A { 
public: 


// объявляем конструктор без параметров 
  A() {
  // тут пишем все что создается при создании класса

       } 
  A(const A&) {} 

// объявляем деструктор
  ~A() 
        {
// тут пишем код удаления объектов созданных в классе
        } 

  A& operator=(const A&) {} 
};
будет как-то так:

Код:
class Komplecs{
int a,b;

public:
// объявляем конструктор без параметров 
  Komplecs() {
  // тут пишем все что создается при создании класса

       } 

// объявляем деструктор
  ~Komplecs() 
        {
// тут пишем код удаления объектов созданных в классе
//...
        } 


// ....
};
Если нужно будет с параметрами, то передаешь в конструктор нужные параметры.

у тебя:
Код:
Komplecs c;
будет вызван конструктор класса без параметров, по умолчанию.

Последний раз редактировалось vvmcpp; 09.02.2014 в 16:44. Причина: дополнение ответа
vvmcpp вне форума Ответить с цитированием
Старый 09.02.2014, 16:48   #8
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

В книге у Страуструпа вроде бы был пример класса комплексных чисел с разбором и описанием. Посмотри.
rrrFer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Конструкторы в С++ Елена Н. Помощь студентам 1 16.12.2013 17:43
Конструкторы Gen_r_questions PHP 4 05.04.2011 12:38
Конструкторы и деструкторы @arkadii Общие вопросы C/C++ 2 10.11.2010 17:40
конструкторы zhenya.ya Помощь студентам 3 16.09.2010 09:34
Конструкторы Лорд Общие вопросы C/C++ 1 21.12.2008 18:35