Форум программистов, компьютерный форум 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++ Сильноветвящееся дерево Помогите реализовать произвольное сильноветвящееся дерево и основные функции . подробнее

Показать сообщение отдельно
TheCalligrapher
С чаем беда...
Эксперт С++
 Аватар для TheCalligrapher
2777 / 1423 / 390
Регистрация: 18.10.2014
Сообщений: 2,616
26.11.2014, 00:04     При одном кострукторе вызывется деструктор, при другом нет - почему?
Цитата Сообщение от Gudsaf Посмотреть сообщение
Идея как раз была в том, чтобы он создавал узлы и в них ставил указатели на Tree::nil. Но nil то определён после определения конструктора.
В языке С++ не имеет никакого значения, где определен член класса - "до" или "после". Тело метода класса всегда видит все определение класса, от начала до конца.

Но дело тут не в том, "после" или "до" определен 'nil', а в том, что 'nil' является членом класса 'Tree', а не класса 'Node'. Поэтому 'Node' про 'nil' ничего не знает и знать не может, независимо от того, "после" или "до" этот 'nil' определен.

Цитата Сообщение от Gudsaf Посмотреть сообщение
Поэтому я и решил создать его и каждый раз передавать его адрес при вызове второго конструктора.
Прекрасная идея. Только с чего вы взяли, что ваше

C++
1
Node(int key, Node NIL)
будет передавать именно адрес? Я тут в упор не вижу никаких намеков на передачу адреса. Здесь передается копия значения, а не адрес. Адрес в С++ - это указатель. Поэтому если вы хотите передавать адрес, то так и пишите

C++
1
2
3
4
5
Node(int key, Node *nil)
{
  left = right = nil;
  ...
}
Можно еще воспользоваться ссылками, но это в данном случае неуместно.
 
Текущее время: 22:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru