#include <iostream> #include <vector> using namespace std; class NoDefault { friend ostream& operator << (ostream& os, const NoDefault& o); private: static unsigned _id; unsigned id; unsigned pid; public: NoDefault(char ch){ id = ++_id; pid = 0; cout << "NoDefault(char): " << id << endl; } NoDefault(const NoDefault& o) { id = ++_id; pid = o.id; cout << "NoDefault(const NoDefault&): " << id << " by pid: " << o.id << endl; } }; unsigned NoDefault::_id = 0; ostream& operator << (ostream& os, const NoDefault& o) { os << "id: " << o.id << ";/tpid: " << o.pid; return os; } int main() { //! NoDefault o0; // error NoDefault o1('1'); NoDefault o2(o1); // cannot initialize array //! NoDefault os0[10]; vector<NoDefault> v0; v0.push_back(o1); cout << "vector<> v(n, c)" << endl; //! vector<NoDefault> v1(10); vector<NoDefault> v2(10, NoDefault('1')); // malloc & new //! NoDefault *op1 = new NoDefault[10]; // malloc space for 10 NoDefault objects, but not initialize it. NoDefault *op2 = (NoDefault*)malloc(sizeof(NoDefault) * 10); new(op2 + 1) NoDefault('c'); // initilize op2[1] cout << op2[1] << endl; cout << op2[0] << endl; // op2[0] is not initialized return 0; }