#include
#include
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 v0;
v0.push_back(o1);
cout << "vector<> v(n, c)" << endl;
//! vector v1(10);
vector 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;
}
Monday, May 4, 2009
construct array by nodefault class
Just a test for pretty.js :)
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment