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

Непонятный вызов Деструкторов при создании списка - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Error 1 error C2447: '{' : missing function header (old-style formal list?) и почему не работает ? и подскажите как пользоваться wcout http://www.cyberforum.ru/cpp-beginners/thread790192.html
Всем привет я начинаю обучаться программированию и сегодня столкнулся с такой проблемой Error 1 error C2447: '{' : missing function header (old-style formal list?) и почему не работает ? и подскажите как пользоваться wcout скажите где я тут ошибся!? #include "stdafx.h" #include "std_lib_facilities.h" #include <iostream> using namespace std; int main(); { CString cs("meow");
C++ Функция , Указатели , С++ , Задачка (среднее арифметическое все введенных чисел) задание было : создать функцию , которая вводит с клавиатуры последовательность целых чисел и после ввода последнего числа выводит на печать в главной функции среднее арифметическое все введенных чисел . параметром функции является количество вводимых чисел. вот прога : #include <iostream.h> double srarifm (int n); void main() { int n,b; do{ http://www.cyberforum.ru/cpp-beginners/thread790182.html
Нужен хороший совет! C++
Всем привет! Народ всем привет у меня вопрос вот я хочу связать свою жизнь с game-developingom(для этого я учу c++ и в скором времени буду учить 3д) ,для этого мне нужен ноутбук(я по 3-4 часа у 2-ого брата сижу за компом) и вот я и подумал изучить верстку, а именно html,css,javascript,cms(для фриланса) реально ли изучать ее паралельно с c++ или я запутаюсь?
C++ Составление грамматики
Кто делал задачу из книги Страуструпа "Принципы и практика использования С++": Напишите программу, проверяющую корректность предложений в соответствии с правилами грамматики английского языка из раздела 6.4.1. Будем считать, что каждое предложение заканчивается точкой, окруженной пробелами. Например, фраза birds fly but the fish swim . является предложением, а фразы but birds fly but the fish...
C++ ЛР: Сравнение сортировок http://www.cyberforum.ru/cpp-beginners/thread790173.html
нужно экспериментально сравнить временную сложность и провести качественный анализ трех сортировок: выбором шейкерная слиянием В коде программы для каждого реализуемого метода сортировки необходимо предусмотреть переменные-счетчики, для определения числа операций попарных сравнений и перестановок элементов, совершенных в ходе выполнения операций сортировки. Результирующие значения...
C++ Не присваевается значение Есть область памяти (строка), условно поделенная на две части A и B. Область B идет сразу после A. Заданы длины обоих частей. Используйте рекурсивный reverse(), чтобы поменять a и b местами. Решение не требует рекурсии, кроме той, что в reverse(). #include <iostream> #include <string.h> #include <string> void reverse(char* s, size_t arg_a, size_t arg_b); подробнее

Показать сообщение отдельно
UACrimea
4 / 0 / 0
Регистрация: 19.02.2013
Сообщений: 6
19.02.2013, 19:07     Непонятный вызов Деструкторов при создании списка
Непонятный вызов Деструкторов при создании списка.

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
#include <iostream>
#include <list>
#include <vector>
#include <string>
using namespace std;
 
class AAA
{
    friend ostream &operator<<(ostream &, const AAA &);
   public:
      double x;
 
      AAA(double _x)
      {
          cout << "Vizvan Konstructor\n";
          x=_x;
      }
      
      ~AAA()
      {
         cout << "Vizvan Destructor\n";
      };
};
 
ostream &operator<<(ostream &output, const AAA &aaa)
{
   output << aaa.x << ' ' << endl;
   return output;
}
 
int main()
{
   list<AAA> L;
   L.push_back(AAA(3));
   cout<<"\n";
   L.push_back(AAA(7));
   cout<<"\n";
   L.push_back(AAA(9));
   cout<<"\n";
  
   list<AAA>::iterator i;
   for(i=L.begin(); i != L.end(); ++i) 
      cout << *i; // print with overloaded operator
   
   return 0;
}
Результат работы программы:
Vizvan Konstructor
Vizvan Destructor

Vizvan Konstructor
Vizvan Destructor
Vizvan Destructor

Vizvan Konstructor
Vizvan Destructor
Vizvan Destructor
Vizvan Destructor

3
7
9
Vizvan Destructor
Vizvan Destructor
Vizvan Destructor
Vizvan Destructor

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

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 <list>
using namespace std;
 
 
class AAA
{
   public:
      double x;
 
      AAA(double _x)
      {
          cout << "Vizvan Konstructor\n";
          x=_x;
      }
      
      ~AAA()
      {
         cout << "Vizvan Destructor\n";
      };
};
 
 
 
 
int main()
{
   list<AAA> L;
   AAA Ablob(2);
 
   Ablob.x=7;
   L.push_back(Ablob); 
 
   Ablob.x=5;
   L.push_back(Ablob);  
              
   Ablob.x=8;
   L.push_back(Ablob); 
 
   list<AAA>::iterator i;
 
   for(i=L.begin(); i != L.end(); ++i) 
       cout << (*i).x << " " << endl; 
 
   
 
   return 0;
}
Результат:
Vizvan Konstructor
7
5
8
Vizvan Destructor
Vizvan Destructor
Vizvan Destructor
Vizvan Destructor

Конструктор вызывается один раз потому, что мы создали один объект вне списка. 4-ре Деструктора вызываются по завершению проги(1-н к созданному отдельно объекту и 3-и к объектам скопированным в список).
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 23:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru