#include #include "Point.h" int main(int argc, char** argv) { int stack_int; // stack-allocated int int* heap_int = new int; // heap-allocated, uninitialized int int* heap_int_init = new int{12}; // heap-allocated, initialized to 12 int stack_arr[3]; // stack-allocated array of 3 uninitialized ints int* heap_arr = new int[3]; // heap-allocated array of 3 uninitialized ints // Value initialize array elements (to zeros). int* heap_arr_init_val = new int[3](); // heap-alloc array of 3 zeros // C++11: can use a braced list of element initializers. // if initializer list is short, remaining elements are value initialized. int* heap_arr_init_lst = new int[3]{4, 5}; // heap-alloc array of {4, 5, 0} Point stack_pt(1, 2); // stack-allocated Point object. Point* heap_pt = new Point(1, 2); // heap allocated Point object. // would be OK if we had a default constructor for Points, but // since we don't, the compiler complains. // Point *heap_pt_arr_err = new Point[2]; // heap-alloc, value initialized // C++11: can use a braced list of element initializers. Point* heap_pt_arr_init_lst = new Point[2]{{1, 2}, {3, 4}}; delete heap_int; // correct delete heap_int_init; // correct delete heap_pt; // correct delete heap_arr; // incorrect! should be delete[] heap_arr delete[] heap_arr_init_val; // correct delete[] heap_pt_arr_init_lst; // correct // memory leak of heap_arr_init_lst! return EXIT_SUCCESS; }