我们应该都知道C++中建立类的对象有两种方式:
①静态建立,例如B b;
静态建立一个类对象,就是由编译器为对象在栈空间中分配内存。使用这种方法,是直接调用类的构造函数。
(2)动态建立,例如 B b = new B();
动态建立一个类对象,就是使用new运算符为对象在堆空间中分配内存。这个过程分为两步:第一步执行operator new( )函数,在堆空间中搜索一块内存并进行分配;第二步调用类的构造函数构造对象。这种方法是间接调用类的构造函数。
代码示例:
#include <math.h>
#include <iostream>
using namespace std ;
class COMPLEX
{public:
double real;
double image;
double AbsComplex( )
{ double temp;
temp=real*real+image*image;
return sqrt(temp);}
COMPLEX();
COMPLEX(double r,double i)
{ real=r;
image=i;
}
~COMPLEX() //析构函数
{
cout<<"自动调用析构函数"<<endl;
}
};
int main( )
{ COMPLEX *cpl;
cpl = new COMPLEX(6,8) ;
//调用“构造函数”初始化对象的
//COMPLEX c;
//错误:因为“构造函数”有两个参数
cout<<"复数"<<cpl->real<<"+"<<cpl->image<<"i的绝对值是:"
<<cpl->AbsComplex()
<<endl;
delete cpl ;
COMPLEX cp2(3,4) ;
cout<<"复数"<<cp2.real<<"+"<<cp2.image<<"i的绝对值是:"
<<cp2.AbsComplex()
<<endl;//随后自动调用析构函数
return 0;
}
运行结果: