fork download
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. class Sample
  6. {
  7. protected:
  8. int * data;
  9.  
  10. public:
  11. Sample() = delete;
  12. Sample( size_t d )
  13. : data( new int[ d ] ) {
  14. cout << "Sample()" << endl;
  15. }
  16. ~Sample() {
  17. delete [] data;
  18. cout << "~Sample()" << endl;
  19. }
  20. };
  21.  
  22. class SampleSet
  23. {
  24. protected:
  25. Sample* samples;
  26. size_t numOfSamples;
  27. public:
  28. SampleSet() = delete;
  29. SampleSet( size_t n, size_t d )
  30. : samples( (Sample*)operator new( sizeof(Sample)*n ) ),
  31. numOfSamples(n) {
  32. for( ; n; --n ) new (samples+n-1) Sample( d );
  33. }
  34. ~SampleSet() {
  35. for( ; numOfSamples; --numOfSamples )
  36. (samples+numOfSamples-1)->~Sample();
  37. operator delete( samples );
  38. }
  39. };
  40.  
  41. int main() {
  42. SampleSet ss( 10, 100 );
  43.  
  44. }
Success #stdin #stdout 0s 3060KB
stdin
Standard input is empty
stdout
Sample()
Sample()
Sample()
Sample()
Sample()
Sample()
Sample()
Sample()
Sample()
Sample()
~Sample()
~Sample()
~Sample()
~Sample()
~Sample()
~Sample()
~Sample()
~Sample()
~Sample()
~Sample()