blob: 75bc48ce776d959e65963bafdf2810206df32931 (
plain)
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
|
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "FlexArrayTmpl.H"
struct InnerContainer {
int num;
InnerContainer(InnerContainer &src){
this->num=src.num;
}
InnerContainer &operator=(InnerContainer &src){
if(this==&src) return src;
this->num=src.num;
return *this;
}
InnerContainer(){
printf("\tNew InnerContainer %lu\n",(unsigned long)this);
num=-1; /* uninitialized */
}
~InnerContainer(){
printf("\tInnerContainer[%lu] destruct %d\n",(unsigned long)this,num);
}
};
struct OuterContainer {
int num;
FlexArray<InnerContainer> inner;
OuterContainer(OuterContainer &src){
this->num=src.num;
this->inner=src.inner;
}
OuterContainer &operator=(OuterContainer &src){
if(this==&src) return src;
this->num=src.num;
this->inner=src.inner;
return *this;
}
OuterContainer(){
printf("New OuterContainer %lu\n",(unsigned long)this);
num=-1;
}
~OuterContainer(){
printf("OuterContainer[%lu] destruct %d innersize=%u\n",
(unsigned long)this,num,inner.getSize());
}
};
struct Container {
FlexArray<OuterContainer> outer;
Container(int sz){
int i,j;
outer.setSize(sz);
for(i=0;i<sz;i++){
OuterContainer o;
printf("***Outer create [%u]\n",i);
o.num=i;
o.inner.setSize(sz);
for(j=0;j<sz;j++){
printf("\t***Inner create [%u]\n",j);
(o.inner[j]).num=j;
}
outer[i]=o;
}
}
~Container(){
printf("Container Destructor outersize=%u\n",outer.getSize());
}
};
void main(int argc,char *argv[]){
Container *c;
puts("new container");
c = new Container(3);
puts("CREATED--------(now destroy)");
delete c;
puts("DONE");
}
|