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

При одном кострукторе вызывется деструктор, при другом нет - почему? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Тесты2 http://www.cyberforum.ru/cpp-beginners/thread1311094.html
#include <iostream> using namespace std; class Person { public: Person(); virtual ~ Person();
C++ троичная система чему равняется число 0.6(10 система) в троичной системе? http://www.cyberforum.ru/cpp-beginners/thread1311092.html
нелинейные уравнения методом ньютона (с Паскаля в С++) C++
есть код в Паскале. помогите перевести в С++. program Newtons_method; uses crt; var a,b,c,E,sol,xp,x:real; n:integer; function f(u:real):real; begin
C++ Тесты
Привет всем к вам просьба кто может вот вопрос 7 Вопрос 7 Когда происходит динамическое связывания ответ а во время связоования ответ B во воремя инкапсуляции ответ С во время камиляции
C++ монотон массив http://www.cyberforum.ru/cpp-beginners/thread1311082.html
{ int a={1,8,56,98,25,-9,45,64,17,5,79}; for (int k = 0; k < 12; k++) { bool swaped=false; for (int i = 0; i < 12-1; i++) { if (a>a) { swaped =true;
C++ Сильноветвящееся дерево Помогите реализовать произвольное сильноветвящееся дерево и основные функции . подробнее

Показать сообщение отдельно
Gudsaf
103 / 14 / 3
Регистрация: 29.11.2010
Сообщений: 325
25.11.2014, 23:25     При одном кострукторе вызывется деструктор, при другом нет - почему?
Есть класс дерево, в нём вложен класс лист. В подклассе лист есть два конструктора: Node(int key, Node NIL) и Node()
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#include <iostream>
 
class Tree
{
    public: 
 
    class Node
    {
        public:
 
        //node info
        Node* left;
        Node* right;
        int _key;
        int _level;
 
        //construct NIL node
        Node()
        {
            left = this;
            right = this;
            _level = 0;
            _key = -1;
        }
 
        Node(int key, Node NIL)
        {
            left = &NIL;
            right = &NIL;
            _level = 1;
            _key = key;
        }
    };
 
    Node nil;
 
    Tree() {}
 
void create()
    {
        char key;
 
        printf("\n   .. Create AATree'\n");
 
        while (true)
        {   
            std::cin >> key;
 
            else if (nil.left == &nil && nil.right == &nil)
            {   //сделать корень, т.к. у нила нет детей, следовательно - нет корня
                Node *tmp = new Node;
                tmp->left = tmp->right = &nil;
                tmp->_key = atoi(&key);
                nil.left = nil.right = tmp;
            }
            else 
            {   //добавить к сыну nil (корню) узел: начинается поиск места для вставки c этого узла
                insert(nil.left, atoi(&key));
            }
        }
    }
 
    void insert(Node *thisNode, int key)
    {
        if (key < thisNode->_key)
        {   // спускаемся влево
            if (thisNode->left != &nil)
                // сын этого узла - не nil: идём глубже
                insert(thisNode->left, key);
            else
            {   // сын этого узла - nil: создали узел (левый сын) и связали с этим узлом
                //Node *tmp = new Node(key,nil);
                //Node newNode(key, nil);
                Node *tmp = new Node();
                tmp->left = tmp->right = &nil;
                tmp->_key = key;
                thisNode->left = tmp;
            }
        }
        else if (key > thisNode->_key)
        {   // спускаемся вправо
            if (thisNode->right != &nil)
                // сын этого узла - не nil: идём глубже
                insert(thisNode->right, key);
            else
            {   // сын этого узла - nil: создали узел (правый сын) и связали с этим узлом
                //Node *tmp = new Node(key, nil);
                //Node newNode(key, nil);
                //thisNode->right = tmp;
            }
        }
        else
        {   // key = thisNode
            printf("   .. key \'%i\' is bysu, use another key", key);
            //return 0;
        }
 
        //балансируем дерево в этом узле
        //skew(thisNode);
        //split(thisNode);
    }
};
 
 
int main()
{
    Tree AATree;
    AATree.create();
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 21:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru