//====================
class MyClass; …………
MyClass *pMyObj = new MyClass(); //在堆上分配空间,然后调用MyClass的默认构造函数
pMyObj-> field1 = 11; //访问成员
delete pMyObj; //new出来的对象必须用delete释放。delete先调用MyClass的析构数,然后回收内存
//====================
class MyClass; //定义了一个我自己的类
…………
MyClass MyObj; //在栈中生成对象
MyClass MyObj = new MyClass(); //这样就错了,因为new返回一个在堆中生成的对象的地址
MyObj.field1 = 11; //访问成员
//delete MyObj; //错误,不能释放对象,delete只能释放指针(由new返回的指针)指向的对象
另外:对象在一般情况下是数据成员的集合(不含虚的东东),而没有函数指针,成员函数是通过隐式的this指针完成调用的
|