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

Правильно ли реализовано удаление элемента из массива и совершен вызов деструктора? - C++

Восстановить пароль Регистрация
 
Supernatural
285 / 141 / 28
Регистрация: 22.11.2010
Сообщений: 1,439
20.06.2014, 20:53     Правильно ли реализовано удаление элемента из массива и совершен вызов деструктора? #1
я ведь правильно определил удаление элемента из массива и совершил вызов деструктора?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class ECM
{
.....
}
ECM *pECM[100];
....
void ECM::~ECM()
{
cout<<"Удален";
}
void main()
{
pECM[i]->~ECM();//удалить i-тый элемент
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.06.2014, 20:53     Правильно ли реализовано удаление элемента из массива и совершен вызов деструктора?
Посмотрите здесь:

Вызов деструктора C++
C++ Явный вызов деструктора
C++ Вызов деструктора
C++ Повторный вызов деструктора
C++ Явный вызов деструктора
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4303 / 3724 / 1255
Регистрация: 14.04.2014
Сообщений: 14,581
20.06.2014, 20:56     Правильно ли реализовано удаление элемента из массива и совершен вызов деструктора? #2
Разве там не delete нужно использовать, если у тебя указатели?
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11838 / 6817 / 771
Регистрация: 27.09.2012
Сообщений: 16,910
Записей в блоге: 2
Завершенные тесты: 1
20.06.2014, 20:59     Правильно ли реализовано удаление элемента из массива и совершен вызов деструктора? #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Supernatural Посмотреть сообщение
pECM[i]->~ECM();//удалить i-тый элемент
во-первых, массив не инициализирован, во-вторых, всё зависит от того как выделялась память под объекты
Supernatural
285 / 141 / 28
Регистрация: 22.11.2010
Сообщений: 1,439
20.06.2014, 21:03  [ТС]     Правильно ли реализовано удаление элемента из массива и совершен вызов деструктора? #4
ах-да и забыл:
C++
1
2
3
4
ECM::~ECM()                     //удалить объект
{
 
}
реализация деструктора

Добавлено через 1 минуту
Цитата Сообщение от Croessmah Посмотреть сообщение
во-первых, массив не инициализирован, во-вторых, всё зависит от того как выделялась память под объекты
у меня вроде все работает, кроме удаления элемента. Я выделил память, просто привел лишь отдельный фрагмент кода

Добавлено через 1 минуту
во-вторых, всё зависит от того как выделялась память под объекты
через new, хотя значит я просто не дописал процедуру удаления

Добавлено через 1 минуту
я только не пойму, деструктор в определении остается пустым или туда все же надо вписывать команду delete?
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11838 / 6817 / 771
Регистрация: 27.09.2012
Сообщений: 16,910
Записей в блоге: 2
Завершенные тесты: 1
20.06.2014, 21:04     Правильно ли реализовано удаление элемента из массива и совершен вызов деструктора? #5
Цитата Сообщение от Supernatural Посмотреть сообщение
Я выделил память, просто привел лишь отдельный фрагмент кода
от того как выделили зависит и как уничтожать.
Supernatural
285 / 141 / 28
Регистрация: 22.11.2010
Сообщений: 1,439
20.06.2014, 21:09  [ТС]     Правильно ли реализовано удаление элемента из массива и совершен вызов деструктора? #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
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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
#include <vcl.h>
#include <iostream.h>
#include <string.h>
#pragma hdrstop
#pragma argsused
using namespace std;
//------------------------------------------------------------------------------
string stemporary;  //ãëîáГ*ëüГ*ûå âðåìåГ*Г*ûå ïåðåìåГ*Г*ûå
int itemporary;
float ftemporary;
float fftemporary;
string com;
int i=0;
//------------------------------------------------------------------------------
class ECM
{
char* type;
float Ghz;
int Memory;
float Gb;
public:
ECM(); //ГЄГ®Г*ñòðóêòîð ГЎГҐГ§ ГЇГ*Г°Г*ìåòðîâ
ECM(char* TYPE,float GHZ,int MEMORY,float GB);//ГЄГ®Г*ñòðóêòîð Г± ГЇГ*Г°Г*ìåòðГ*ìè
ECM(const ECM&); //ГЄГ®Г*ñòðóêòîð êîïèðîâГ*Г*ГЁГї
~ECM();          //äåñòðóêòîð
//------------------------------------------------------------------------------
void settype(char* temp);   //ГґГіГ*êöèè äëÿ êîìГ*Г*äû  Г€Г§Г¬ГҐГ*ГЁГІГј
void setghz(float temp);
void setmemory(int temp);
void setgb(float temp);
void show();
//------------------------------------------------------------------------------
char* gettypecpu();         //ГґГіГ*êöèè äëÿ êîìГ*Г*äû  ГЏГ®ГЄГ*Г§Г*ГІГј
float getghz();
int getmemory();
float getgb();
};
//------------------------------------------------------------------------------
void ECM::settype(char* temp)   //ГіГ±ГІГ*Г*îâèòü ГІГЁГЇ ïðîöåññîðГ*
{
type=temp;
}
//------------------------------------------------------------------------------
void ECM::setghz(float temp)    //ГіГ±ГІГ*Г*îâèòü Г·Г*ñòîòó ïðîöåññîðГ*
{
Ghz=temp;
}
//------------------------------------------------------------------------------
void ECM::setmemory(int temp)   //ГіГ±ГІГ*Г*îâèòü îáúåì ГЇГ*ìÿòè
{
Memory=temp;
}
//------------------------------------------------------------------------------
void ECM::setgb(float temp)     //ГіГ±ГІГ*Г*îâèòü îáúåì Г*Г*êîïèòåëÿ
{
Gb=temp;
}
//------------------------------------------------------------------------------
ECM::~ECM()                     //óäëèòü îáúåêò
{
 
}
//------------------------------------------------------------------------------
ECM::ECM(char* TYPE,float GHZ,int MEMORY,float GB) //ГЄГ®Г*ñòðóêòîð Г± ГЇГ*Г°Г*ìåòðГ*ìè
{
type=TYPE;
Ghz=GHZ;
Memory=MEMORY;
Gb=GB;
}
//------------------------------------------------------------------------------
ECM::ECM(){ //ГЄГ®Г*ñòðóêòîð ГЎГҐГ§ ГЇГ*Г°Г*ìåòðîâ
type=NULL;
Ghz=0;
Memory=0;
Gb=0;
}
//------------------------------------------------------------------------------
ECM::ECM(const ECM &E)   //ГЄГ®Г*ñòðóêòîð êîïèðîâГ*Г*ГЁГї
{
if (E.type) {type= new char [strlen(E.type)+1]; strcpy(type, E.type);}
else type=0;
type=E.type;Ghz=E.Ghz;Memory=E.Memory;Gb=E.Gb;
}                       
//------------------------------------------------------------------------------
char* ECM::gettypecpu() {return type;}
float ECM::getghz() {return Ghz;}
int ECM::getmemory() {return Memory;}
float ECM::getgb() {return Gb;}
void add_element();
void edit_element(int i);
void show_element(int i);
void copy_element(int i);
void delete_element(int i);
void show_all();
//------------------------------------------------------------------------------
ECM *pECM[100];
//------------------------------------------------------------------------------
void add_element() //ïðîöåäóðГ* äîáГ*âëåГ*ГЁГї
{
++i;
cout<<"\nCPU ";cin>>stemporary;
char* ctemporary = new char [stemporary.length()+1];
strcpy(ctemporary,stemporary.c_str());
cout<<"\nGhz ";cin>>ftemporary;
cout<<"\nMemory ";cin>>itemporary;
cout<<"\nGb ";cin>>fftemporary;
pECM[i]= new ECM(ctemporary,ftemporary,itemporary,fftemporary);//Г*îâûé ýëåìåГ*ГІ
}
//------------------------------------------------------------------------------
void edit_element(int i)
{
 
}
//------------------------------------------------------------------------------
void delete_element(int i)  //ГіГ¤Г*ëèòü ýëåìåГ*ГІ
{
pECM[i]->~ECM();
cout<<"\nElement has been deleted";
}
//------------------------------------------------------------------------------
void show_element(int i)   //ïîêГ*Г§Г*ГІГј ýëåìåГ*ГІ
{
cout<<pECM[i]->gettypecpu()<<" "<<pECM[i]->getghz()<<" "<<pECM[i]->getmemory()<<" "<<pECM[i]->getgb();
}
//------------------------------------------------------------------------------
void show_all()            //ïîêГ*Г§Г*ГІГј ГўГҐГ±Гј ñïèñîê
{
for (int k=0;k<i;k++)
cout<<pECM[k]->gettypecpu()<<" "<<pECM[k]->getghz()<<" "<<pECM[k]->getmemory()<<" "<<pECM[k]->getgb();
}
//------------------------------------------------------------------------------
void main()
{
int i;
int temp;
cout<<"Enter command: ";cin>>com;
while (com!="exit")
{
if (com=="add") {add_element();cout<<"\nEnter command: ";cin>>com;} else
if (com=="edit") {cin>>i;edit_element(i);cout<<"\nEnter command: ";cin>>com;} else
if (com=="delete") {cout<<"\nEnter number of record";cin>>temp;delete_element(temp);cout<<"\nEnter command: ";cin>>com;} else
if (com=="show") {cout<<"\nEnter number of record";cin>>temp;show_element(temp);cout<<"\nEnter command: ";cin>>com;} else
if (com=="show all") {show_all;cout<<"\nEnter command: ";cin>>com;} else
if (com=="exit") exit (EXIT_SUCCESS); else
if ((com!="add")||(com!="edit")||(com!="delete")||(com!="show")||(com!="show all")||(com!="exit")) {cout<<"\nEnter command: ";cin>>com;};
}
}
//---------------------------------------------------------------------------
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11838 / 6817 / 771
Регистрация: 27.09.2012
Сообщений: 16,910
Записей в блоге: 2
Завершенные тесты: 1
20.06.2014, 21:16     Правильно ли реализовано удаление элемента из массива и совершен вызов деструктора? #7
C++
1
2
3
4
5
void delete_element(int i)  //удалить элемент
{
delete pECM[i] ;//Деструктор вызовется без вашего участия.
cout<<"\nElement has been deleted";
}
Supernatural
285 / 141 / 28
Регистрация: 22.11.2010
Сообщений: 1,439
20.06.2014, 22:05  [ТС]     Правильно ли реализовано удаление элемента из массива и совершен вызов деструктора? #8
Croessmah, хорошо, а в каких случаях мне можно использовать конструктор без параметра? С параметром уже разобрался.
Trwsdf
Заблокирован
20.06.2014, 22:22     Правильно ли реализовано удаление элемента из массива и совершен вызов деструктора? #9
Цитата Сообщение от Supernatural Посмотреть сообщение
ECM *pECM[100];
100 указателей на объект ))) круто

Добавлено через 14 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class ECM
{
public:
    ~ECM();
};
ECM *pECM=nullptr;
 
ECM::~ECM()
{
std::cout<<"Удален";
};
 
int main(int argc, char** argv) {
 
    pECM =new ECM[100];
    delete[] pECM;
Указателей на массив не существует, существуют только указатель на один элемент массива.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
21.06.2014, 14:42     Правильно ли реализовано удаление элемента из массива и совершен вызов деструктора? #10
Цитата Сообщение от Trwsdf Посмотреть сообщение
Указателей на массив не существует, существуют только указатель на один элемент массива.
C++
1
2
3
4
5
6
7
8
int main() {
 
    const int N = 42;
    int a[N];
    int (*p)[N] = &a;
 
    return 0;
}
p - указатель на массив из N элементов типа int.
Trwsdf
Заблокирован
22.06.2014, 16:26     Правильно ли реализовано удаление элемента из массива и совершен вызов деструктора? #11
Цитата Сообщение от Tulosba Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Код C++
1
2
3
4
5
6
7
8
int main() {
const int N = 42;
 int a[N];
 int (*p)[N] = &a;
return 0;
}
p - указатель на массив из N элементов типа int
.
Теперь вы окончательно укоренили мне мнение о вас, о вашей безграмотности.
Вы так и не поняли, что указателей на массив не существует, существует, только указатели на один элемент массива, их то мы и считаем указателями на массив.
Попытаюсь повторить, но судя с ответов предыдущей темы, ожидаю, что автор и тут будет агрессивно настроен.

То, что вы написали, это указатель на указатель на 1й элемент массива, т.е. есть массив в виде указателя на 1й элемент массива (о чем я писал выше), а есть указатель на этот указатель, - он и является указателем на массив. Т.е. массив в виде указателя на 1й элемент массива - он и считается указателем на массив. Указатель на один элемент массива считается указателем на массив, - но реально не на весь массив, а лишь на один его элемент. Указателей на массив НЕТ И НЕ БЫЛО. Они и не нужны, ибо мы знаем особенность массива (что его элементы в памяти всегда и гарантированно расположены один за другим) и нам всегда хватает лишь указателя на один элемент массив. О чем я выше говорил.
Ниже код:
C++
1
2
3
4
5
6
7
8
9
10
11
 const int N = 3;
    int a[N]={1,2,3};
    
    int (*p)[N] = &a;
    //**p -указатель "на массив" есть указатель на указатель на 1й эдемент массива
    //т.е. есть указатель на массив, в виде указателя на 1й элемент, а
    //указатель на этот указатель и есть указатель на массив. Таким образом
    //эта конструкция подтверждает то, что указатель на один элемент 
    //считается указателем на массив.
    cout<<**p; //1 - указатель на один элемент массива, но не на массив из n элементов.
    cout<<(*p)[2];
Voivoid
 Аватар для Voivoid
580 / 256 / 12
Регистрация: 31.03.2013
Сообщений: 1,284
22.06.2014, 16:37     Правильно ли реализовано удаление элемента из массива и совершен вызов деструктора? #12
Цитата Сообщение от Trwsdf Посмотреть сообщение
Теперь вы окончательно укоренили мне мнение о вас, о вашей безграмотности.
Tulosba прав, а ты - нет. Учи теорию типов

Справедливости ради все же отмечу, что это кстати весьма распространенное забруждение
Trwsdf
Заблокирован
22.06.2014, 16:39     Правильно ли реализовано удаление элемента из массива и совершен вызов деструктора? #13
Цитата Сообщение от Voivoid Посмотреть сообщение
Tulosba прав, а ты - нет. Учи теорию типов
Круто папка зашел и сказал, интересно он прежде чем так ответить хоть знает С++?
Voivoid
 Аватар для Voivoid
580 / 256 / 12
Регистрация: 31.03.2013
Сообщений: 1,284
22.06.2014, 16:48     Правильно ли реализовано удаление элемента из массива и совершен вызов деструктора? #14
Цитата Сообщение от Trwsdf Посмотреть сообщение
Круто папка зашел и сказал, интересно он прежде чем так ответить хоть знает С++?
А то!

Даже не знаю какой бы пример попроще подобрать, ну пусть будет например такой:
C++
1
2
3
4
5
6
7
8
9
10
  const int N = 42;
  const int M = 43;
 
  int a[ N ];
  int b[ M ];
 
  int( *p )[ N ] = &a;
  int( *q )[ M ] = &b;
 
  p = q;
Вывод компилятора:
error C2440: '=' : cannot convert from 'int (*)[43]' to 'int (*)[42]'
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11838 / 6817 / 771
Регистрация: 27.09.2012
Сообщений: 16,910
Записей в блоге: 2
Завершенные тесты: 1
22.06.2014, 20:21     Правильно ли реализовано удаление элемента из массива и совершен вызов деструктора? #15
Цитата Сообщение от Trwsdf Посмотреть сообщение
//указатель на этот указатель и есть указатель на массив.
Характерная черта массива как типа - известность его размера и в int (*p)[3] создается именно указатель на массив определенного размера, интерпретируя его как тип. Проверим банальной перегрузкой:
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
#include <iostream>
void foo( int (*p)[5] )
{
   std::cout << "void foo( int *p[5] )" << std::endl ;
}
 
void foo( int (*p)[3] )
{
   std::cout << "void foo( int *p[3] )" << std::endl ;
}
 
void foo( int * p )
{
   std::cout << "void foo( int * p )" << std::endl ;
}
 
 
void foo( int ** p )
{
   std::cout << "void foo( int ** p )" << std::endl ;
}
int main( )
{
    int * p1 = 0 ;
    int ** p2 = 0 ;
    int (*p3)[3] = 0 ;
    int (*p4)[5] = 0 ;
    foo(p1) ;
    foo(p2) ;
    foo(p3) ;
    foo(p4) ;
}
Никаких нареканий - все указатели имеют разный тип(даже если указана разная размерность массива). Хоть массив это и просто кусок памяти, но интерпретировать его можно по разному.

P.S. Указатели не указывают на элементы массива, они указывают просто на память определенного типа, будь там указател int ** pp или "статический" массив int (*p)[N]
Trwsdf
Заблокирован
24.06.2014, 15:46     Правильно ли реализовано удаление элемента из массива и совершен вызов деструктора? #16
Цитата Сообщение от Croessmah Посмотреть сообщение
Характерная черта массива как типа - известность его размера и в int (*p)[3] создается именно указатель на массив определенного размера, интерпретируя его как тип.
1 Почитал. Ну что тут скажешь.
В С и С++ размерность С массива всегда передается отдельным числом. Поэтому конструкция вида char * - получается, для него не указатель на массив, ибо там не указана размерность. Удивительно отчего он с ним тогда работает как с массивом в коде, но это его проблемы.

2 int (*p)[3][3] - это такой же указатель как и int** p, но с ограничениями, поддерживаемыми компилятором и запрещающим его приведение с простому указателю.
Речь шла о другом, а именно, что указателей на массив не существует. Как можно сразу указывать на все элементы массива? Привожу пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//строгие указатели
    int init[2][2][2]={{{1,2},{3,4}},{{5,6},{7,8}}};
    int init2[2]={1,2};
 
    int (*p)[2][2][2] =&init;   
 
    cout<<(***p)[2]<<endl;//3
    cout<<(*(init+1))[1][0]<<endl;//7
    cout<<***init<<endl; //1
    cout<<****p<<endl; //1
 
    int *** p1=(int***)init; //0x1 -oops, всегда 1.
    int *p2=(int*)init2; //корректно
 
    cout<<*p2<<endl;
    cout<<p2[1]<<endl;
    
    //нестрогие
    int ** array; 
    //матрица
    array = (int **)malloc(5 * sizeof(int *));
    for(int i = 0; i < 5; i++)
        array[i] = (int *)malloc(5 * sizeof(int));
все массивы представляют собой указатели на один первый элемент массива, а не на весь массив, посему не существует указателей на массив.
Voivoid
 Аватар для Voivoid
580 / 256 / 12
Регистрация: 31.03.2013
Сообщений: 1,284
13.08.2014, 11:33     Правильно ли реализовано удаление элемента из массива и совершен вызов деструктора? #17
Теория типов? Не-е, лучше навыдумывать какую-нибудь ерунду про строгие и нестрогие указатели

Цитата Сообщение от Trwsdf Посмотреть сообщение
Как можно сразу указывать на все элементы массива?
Интересно, лол, вот скажем когда ты смотришь на указатель на std::array, то у тебя этот вопрос возникает?

Добавлено через 12 часов 19 минут
Вот еще кусок кода для самых маленьких:

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
#include <iostream>
#include <typeinfo>
 
int main() {
 
  int* arr;
  int( *arr1 )[ 10 ];
  int( *arr2 )[ 11 ];
 
  auto& t( typeid( arr ) );
  auto& t1 ( typeid( arr1 ) );
  auto& t2 ( typeid( arr2 ) );
 
  std::cout << t.raw_name() << "\n";
  std::cout << t1.raw_name() << "\n";
  std::cout << t2.raw_name() << "\n";
 
  std::cout << ( t1 == t2 ) << " " << ( t == t1 ) << " " << ( t == t2 ) << "\n";
 
/*
 Если кому лень это все запускать, то скажу, что имена все разные, а результаты сравнений все ложные
*/
 
  /*
  int x = *arr; // ok
  int y = *arr1; // error cannot convert from 'int [10]' to 'int'
  */
 
  return 0;
}
Trwsdf
Заблокирован
14.08.2014, 10:32     Правильно ли реализовано удаление элемента из массива и совершен вызов деструктора? #18
Цитата Сообщение от Voivoid Посмотреть сообщение
Теория типов? Не-е, лучше навыдумывать какую-нибудь ерунду про строгие и нестрогие указатели
хочешь меня достать? не выйдет.
Цитата Сообщение от Voivoid Посмотреть сообщение
Интересно, лол, вот скажем когда ты смотришь на указатель на std::array, то у тебя этот вопрос возникает?
ты сам знаешь, что не прав.
Цитата Сообщение от Voivoid Посмотреть сообщение
Вот еще кусок кода для самых маленьких:
ну во первых твой код не запускается на GNU компиляторе, но это не важно. Суть в том, что он бесполезный и бестолковый, еще раз подтверждаюзий мое мнение о вас.
А именно, ненужные приведения типов , это раз. Второе typeid -оператор, строит объект типа, для указателей с ограничениями,активно используя метаинформацию компилятора, они всегда будут разными.

Еще раз повторяю, господа, администраторы и прочие "знающие люди" самовольно приписавшие себе звания "экспертов" и накрутившие себе цифры. Ваша компетенция и знания не соответствуют действительности, ваши знания очень и очень далеки от экспертных, ваш удел - администрирование, но далеко не программирование.
Как говорится, курица тоже считает, что может летать, но почему то только ползает брюхом по земле, вот так и вы, считаете себя "экспертами", но вызываете только смех у настоящих экспертов.
Подумайте над этим.


Добавлено через 5 минут
и да, можете банить, отматывать счетчик, что там вы еще любите делать, когда знаний не хватает, - мне все все равно.
Я собсно и заходить сюда не собираюсь больше.
Voivoid
 Аватар для Voivoid
580 / 256 / 12
Регистрация: 31.03.2013
Сообщений: 1,284
14.08.2014, 12:37     Правильно ли реализовано удаление элемента из массива и совершен вызов деструктора? #19
Цитата Сообщение от Trwsdf Посмотреть сообщение
Второе typeid -оператор, строит объект типа, для указателей с ограничениями,активно используя метаинформацию компилятора, они всегда будут разными
А, лол, я кажется понял. У тебя мышление типичного C'шника. Т.е. устройство и семантика языка не важны ( ну естественно, с этим же надо разбираться ), важны только байтики в памяти. Наглядный пример:
C++
1
2
3
  int arr[ 42 ];
  int* p = arr;
  int ( *p1 )[ 42 ] = &arr;
C'шник смотрит куда указывают p и p1, видит одинаковые адреса и соответственно делает блестящий вывод о том, что это одно и тоже
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.08.2014, 13:18     Правильно ли реализовано удаление элемента из массива и совершен вызов деструктора?
Еще ссылки по теме:

Вызов деструктора C++
Правильно ли реализовано вычисление членов последовательности C++
Верно ли реализовано удаление динамического массива C++

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

Или воспользуйтесь поиском по форуму:
HighPredator
14.08.2014, 13:18     Правильно ли реализовано удаление элемента из массива и совершен вызов деструктора?
  #20

Не по теме:

Voivoid, "pls don't feed the troll"

Yandex
Объявления
14.08.2014, 13:18     Правильно ли реализовано удаление элемента из массива и совершен вызов деструктора?
Ответ Создать тему
Опции темы

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