Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
44 / 1 / 0
Регистрация: 26.04.2017
Сообщений: 54
1

Реализовать внешние функции для создания и уничтожения объектов класса

04.10.2018, 18:39. Просмотров 1922. Ответов 4
Метки нет (Все метки)

Здравствуйте, имеется вот такое задание: Создайте класс с закрытыми конструкторами и деструктором. Реализуйте
внешние функции для создания и уничтожения объектов класса. Напишите программу-тест.

Я сделал это задание, используя методы класса (см. код), но никак не соображу как изменить код таким образом, чтобы получились внешние функции для создания\удаления объектов класса. Заранее спасибо за помощь.
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
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
class A {
 
private:
    int value;
 
    A(int x) {
        value = x;
    }
    A(const A&);
    ~A() {}
public:
    static A *newInstance(int z);
 
    
    static void deleteObj(A *a)
    {
        delete a;
        cout << "Объект удален" << endl;
    }
 
    int getval() {
        return value;
    }
 
};
 
A* A::newInstance(int z) {
    return new A(z);
}
 
int main3()
{
    setlocale(LC_CTYPE, "rus");
    A *a1 = A::newInstance(4);
    cout << "Значение = " << a1->getval() << endl;
    A::deleteObj(a1);
    cout << "Значение = " << a1->getval() << endl;
 
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.10.2018, 18:39
Ответы с готовыми решениями:

Анимации создания и уничтожения объектов
Добрый день! Есть набор различных объектов Моделей животных. У каждого вида животных свой набор...

Функция для создания объектов указанного класса
Всем привет, задача такая, как реализовать не знаю. Имеется - базовый класс TMyClass = class...

Приведите какой-нибудь пример использования файлов для создания объектов класса
Дано задание создать некоторый базовый класс и неск. классов наследников. А затем создать коллекцию...

Реализовать для объектов данного класса перегрузку операции
Всем привет. Помогите пж с условием, не могу разобраться вот в этом ( (a=k и k=b)). получаются же...

4
Падаван С++
443 / 257 / 88
Регистрация: 11.11.2014
Сообщений: 897
04.10.2018, 19:48 2
Yavorsky, создайте обычные функции и сделайте их дружественными

Добавлено через 26 секунд
гуглить в сторону friend
0
Эксперт С++
8321 / 3877 / 843
Регистрация: 15.11.2014
Сообщений: 8,778
04.10.2018, 20:44 3
Цитата Сообщение от Yavorsky Посмотреть сообщение
int main3()
заменить на:
C++
1
int main()
и все будет в порядке
1
44 / 1 / 0
Регистрация: 26.04.2017
Сообщений: 54
05.10.2018, 19:05  [ТС] 4
Подскажите, пожалуйста, как это сделать нормально? а то у меня выходит какой-то неработающий бред
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
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
class A {
 
private:
    int value;
    A(const A&);
    ~A() {}
    friend  void createObj(A *a);
    friend  void deleteObj(A *a);
    
public:
    
    
    int getval() {
        return value;
    }
    A(int x) {
        value = x;
    }
};
 
A* createObj(A *obj) {
    return new A(10);
}
 void deleteObj(A *a)
{
    delete a;
    cout << "Объект удален" << endl;
}
 //static A *newInstance(int z);
 /*A* A::newInstance(int z) {
     return new A(z);
 }
 **/
 
 
int main()
{
    setlocale(LC_CTYPE, "rus");
    A *a1;
    createObj(a1);
 
    cout << "Значение = " << a1->getval() << endl;
    deleteObj(a1);
    
    
    cout << "Значение = " << a1->getval() << endl;
 
    
    return 0;
}
0
Падаван С++
443 / 257 / 88
Регистрация: 11.11.2014
Сообщений: 897
05.10.2018, 19:56 5
Лучший ответ Сообщение было отмечено Yavorsky как решение

Решение

Yavorsky,
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
#include <iostream>
 
using namespace std;
 
class A;
 
A* createObj(int value);
void deleteObj(A *a);
 
class A {
 
private:
    int value;
    A(const A&);
    ~A() {}
    friend  A* createObj(int value);
    friend  void deleteObj(A *a);
 
public:
 
 
    int getval() {
        return value;
    }
    A(int x) {
        value = x;
    }
};
 
A* createObj(int value) {
    return new A(10);
}
void deleteObj(A *a)
{
    delete a;
    cout << "deleted" << endl;
}
 
 
int main()
{
    setlocale(LC_CTYPE, "rus");
    A *a1 = nullptr;
    a1 = createObj(10);
 
    cout << "Value = " << a1->getval() << endl;
    deleteObj(a1);
 
    system("pause");
    return 0;
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.10.2018, 19:56

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

Реализовать подсчет количества объектов класса, используя статическую переменную-член класса
как реализовать подсчет количества объектов класса (используя статическую переменную-член класса),...

Автоматизация создания объектов класса
Доброго времени суток, есть вот такой код CFishka *mObjectA = new CFishka(200, 250, &quot;A&quot;);...

Демонстрационная программа создания и уничтожения процессов
Помогите пожалуйста как можно исправить программу Приложение 2 //демонстрационная программа...

Практическое применение классов без создания объектов этого класса
Приветствую всех! Читай книгу Р. Лафоре &quot;ООП в C++&quot; увидел вопрос: &quot;Истинно ли следующее...


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

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

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