学习的乐园

实践,交流,积累,提高!

导航

C++学习笔记之类和对象IV

子对象:一个类的成员是某个类的对象,这个对象就为子对象,类的构造函数要包含对子对象的初始化,通常采用成员初始化表的方法。

#include <iostream.h>
class P
{
public:
 P(int i,int j){m=i,n=j;}
 void print(){cout<<m<<","<<n<<endl;}
private:
 int m,n;
};
class Q
{
public:
 Q(int i,int j,int k):p(i,j),l(k)//成员初始化表
 {
 }
 void print();
private:
 P p;//p为子对象
 int l;
};
void Q::print()
{
 p.print();
 cout<<l<<endl;
 
}
void main()
{
        Q q(6,7,8);
 q.print();
}
堆对象:在程序运行过程中根据需要随时可以建立或删除的对象
堆:内存中一些空闲的存储单元,可以被堆对象占有,删除堆对象获得释放
new运算符返回一个指针,如不能分配到所需的内存,它返回0,此时指针为空指针,也可创建对象数组
delete运算符用来删除new创建的对象或一般类型指针

A *ptr;
ptr = new A(5,6);
delete ptr;

A *ptr;
ptr = new A[5];
delete [][]ptr;

注意:
用于由new返回的指针
也适用于空指针
对一个指针只能使用一次delete操作
对于数组对象,只能用一对括号符,并且考虑数组维数,忽略方括弧内任何数字

用new创建对象时,要调用构造函数,用delete删除对象时,要调用析构函数

#include <iostream>
void fun()
{
 int *p;
 if(p=new int)
 {
  *p=5;
  cout<<*p<<endl;
  delete p;
 }
 else
 cout<<"heap error\n"<<endl;
}
void main()
{
fun();
 int *pa;
 pa = new int[5];
 if (!pa)
 {
  cout<<"heap error\n"<<endl;
  exit(1);
 }
 for(int i=0;i<5;i++)
 {
  pa[i] = i+1;
 }
for(int i=0;i<5;i++)
cout<<pa[i]<<" ";
cout<<endl;
delete pa;

}

posted on 2010-08-07 13:18  CrazeCoder  阅读(247)  评论(0)    收藏  举报