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

Создание и разрушение объектов класса, исследование вызовов конструкторов и деструкторов - C++

Восстановить пароль Регистрация
 
swe-4a
0 / 0 / 0
Регистрация: 03.02.2011
Сообщений: 15
16.04.2013, 22:20     Создание и разрушение объектов класса, исследование вызовов конструкторов и деструкторов #1
Здравствуйте! Проверте пожалуйста код и подскажите мои ошибки. Согласно теме необходимо разобрать класс библиотека(имя – char*, автор – char*,стоимость – 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
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
// начало объявления класса
class biblioteka // имя класса
{
public: // спецификатор доступа
char* name;
char* avtor;
float stoimost;
void message() // функция (метод класса) выводящая сообщение на экран
{
cout << "name: " << name << endl;
cout << "avtor: " << avtor << endl;
cout << "stoimost: " << stoimost << endl ;
 
}
~biblioteka()
{
delete name;
delete avtor;
};
}; // конец объявления класса
 
int main( )
{
setlocale(LC_CTYPE,"Russian");
 
biblioteka pervay;
 
pervay.name="Живая шляпа";
pervay.avtor="Носов";
pervay.stoimost=99;
 
 
biblioteka objMessage; // объявление объекта
pervay.message(); // вызов функции класса message
 
 system("pause");
 
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.04.2013, 22:20     Создание и разрушение объектов класса, исследование вызовов конструкторов и деструкторов
Посмотрите здесь:

C++ Правильное использование конструкторов и деструкторов
Разработка классов, создание конструкторов и деструкторов C++
C++ Порядок вызова конструкторов/деструкторов
C++ Как реализовать набор конструкторов и деструкторов
C++ Вызов конструкторов/деструкторов при наследовании
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ViktorKozlov
133 / 125 / 2
Регистрация: 13.12.2012
Сообщений: 293
16.04.2013, 22:33     Создание и разрушение объектов класса, исследование вызовов конструкторов и деструкторов #2
В вашем примере деструктор, возможно, вообще не требуется, так как указатели получают адреса литералов, у которых статический класс памяти, а уж они с помощью delete не удаляются
swe-4a
0 / 0 / 0
Регистрация: 03.02.2011
Сообщений: 15
16.04.2013, 22:41  [ТС]     Создание и разрушение объектов класса, исследование вызовов конструкторов и деструкторов #3
в задании обязательное условие исследование вызовов деструктора.... программа компелируется, но выдает ошибку ''debug assertion failed...''
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
16.04.2013, 22:49     Создание и разрушение объектов класса, исследование вызовов конструкторов и деструкторов #4
Цитата Сообщение от swe-4a Посмотреть сообщение
в задании обязательное условие исследование вызовов деструктора.
ну дык и напиши деструктор
C++
1
2
3
4
~biblioteka()
{
    cout << "destructor" << endl;
}
Цитата Сообщение от swe-4a Посмотреть сообщение
~biblioteka()
{
delete name;
delete avtor;
};
ты память под строки выделял? нет? а зачем delete поставил?
swe-4a
0 / 0 / 0
Регистрация: 03.02.2011
Сообщений: 15
16.04.2013, 22:55  [ТС]     Создание и разрушение объектов класса, исследование вызовов конструкторов и деструкторов #5
Спасибо, поняла.
ViktorKozlov
133 / 125 / 2
Регистрация: 13.12.2012
Сообщений: 293
16.04.2013, 23:02     Создание и разрушение объектов класса, исследование вызовов конструкторов и деструкторов #6
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
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
// начало объявления класса
class biblioteka // имя класса
{
public: // спецификатор доступа
biblioteka(char* name, char* avtor, float stoimost)
    {
        this->name=new char[strlen(name)+1];
        this->avtor=new char[strlen(avtor)+1];
        this->stoimost=stoimost;
        strcpy(this->name,name);
        strcpy(this->avtor,avtor);
    }
private:
char* name;
char* avtor;
float stoimost;
public:
void message() // функция (метод класса) выводящая сообщение на экран
{
cout << "name: " << name << endl;
cout << "avtor: " << avtor << endl;
cout << "stoimost: " << stoimost << endl ;
 
}
public:
~biblioteka()
{
delete[] name;
delete[] avtor;
}
}; // конец объявления класса
 
int main( )
{
setlocale(LC_CTYPE,"Russian");
 
biblioteka objMessage("Живая шляпа","Носов",99);  // объявление объекта
 
objMessage.message(); // вызов функции класса message
 
 system("pause");
 
return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.04.2013, 23:09     Создание и разрушение объектов класса, исследование вызовов конструкторов и деструкторов
Еще ссылки по теме:

Создание и разрушение объектов C++
Классы и обьекты в С++. Выполнить исследование вызовов конструкторов и деструкторов C++
Задание с использованием конструкторов и деструкторов C++

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

Или воспользуйтесь поиском по форуму:
swe-4a
0 / 0 / 0
Регистрация: 03.02.2011
Сообщений: 15
16.04.2013, 23:09  [ТС]     Создание и разрушение объектов класса, исследование вызовов конструкторов и деструкторов #7
ого, через ''this'' я даже пока не рассматривала...я просто еще до этого не дошла, за код огромное спасибо выглядит куда лучше моего))
Yandex
Объявления
16.04.2013, 23:09     Создание и разрушение объектов класса, исследование вызовов конструкторов и деструкторов
Ответ Создать тему
Опции темы

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