一、指针对象的动态建立与释放
动态建立:new 实现,为指针对象分配空间
动态释放:delete 实现,为指针对象释放空间
#include<iostream>
using namespace std;
class A{
private:
int a;
public:
A(int a1=0):a(a1){
cout<<"调用构造函数"<<endl;
}
~A(){
cout<<"调用析构函数"<<endl;
}
};
int main()
{
//A *p=new A(10);//另一种新建形式
A *q;
cout<<"q为"<<q<<endl;
cout<<"在new之前" <<endl;
q=new A(20);//若要为指针分配空间,需要用new去开辟,实质是调用构造函数实现
cout<<"q为"<<q<<endl;
cout<<"delete之前"<<endl;
delete q;//系统会自动调用析构函数,释放指针
cout<<"q为"<<q<<endl;
}
new与构造函数、delete与析构函数的区别
使用new与delete之前:未调用构造与析构函数
使用new与delete之后:同时也调用构造与析构函数
小结 :指针对象想要获得或释放内存空间,需要通过new和delete实现
二、普通对象
#include<iostream>
using namespace std;
class A{
private:
int a;
public:
A(int a1=0):a(a1){
cout<<"调用构造函数"<<endl;
}
~A(){
cout<<"调用析构函数"<<endl;
}
};
int main()
{
A q;
cout<<"我是普通对象!"<<endl;
}
而普通对象在实例时系统会自动调用构造,在程序运行结束时会自动调用析构函数