关于对象的动态建立和释放
#include<iostream>
//对象的动态建立和释放
using namespace std;
class Object
{
public:
Object()
{
cout<<"构造函数\n";
};
void prinT()
{
cout<<"woshi dayinhanshu \n";
}
~Object()
{
cout<<"析构函数\n";
}
private:
protected:
};
int main()
{
//c
int *p1=(int *)malloc(sizeof(int ));//分配基础类型
free(p1);
int *p2=(int *)malloc(sizeof(int ));//分配数组类型
free(p2);
Object *p3=(Object *)malloc(sizeof(Object));//分配对象
free(p3);
//c++
int *t1=new int;//开辟一个存放整数的存储空间,返回一个指向该存储空间的地址(即指针)
int *t12=new int(10);//分配基础类型 开辟一个存放整数的空间,并指定该整数的初值为100,返回一个指向该存储空间的地址
delete(t1);
char *t2=new char[10];//分配数组类型 开辟一个存放字符数组(包括10个元素)的空间,返回首元素的地址
delete(t2);
Object *t3 =new Object;//分配对象
delete(t3);
system("pause");
}
c不能调用构造和析构函数,而c++的可以
哈哈这样子是不对的,虽然程序没有报错,但是一步一步调试,数组那里出了问题
本程序应该为:
#include<iostream>
//对象的动态建立和释放
using namespace std;
class Object
{
public:
Object()
{
cout<<"构造函数\n";
};
void prinT()
{
cout<<"woshi dayinhanshu \n";
}
~Object()
{
cout<<"析构函数\n";
}
private:
protected:
};
int main()
{
//c
int *p1=(int *)malloc(sizeof(int ));//分配基础类型
free(p1);
int *p2=(int *)malloc(sizeof(int ));//分配数组类型
free(p2);
Object *p3=(Object *)malloc(sizeof(Object));//分配对象
free(p3);
//c++
int *t1=new int;//开辟一个存放整数的存储空间,返回一个指向该存储空间的地址(即指针)
int *t12=new int(10);//分配基础类型 开辟一个存放整数的空间,并指定该整数的初值为100,返回一个指向该存储空间的地址
delete t1;
char *t2=new char[10];//分配数组类型 开辟一个存放字符数组(包括10个元素)的空间,返回首元素的地址
delete [] t2;
Object *t3 =new Object;//分配对象
delete(t3);
system("pause");
}
一定要记住数组的释放的表达方法。

浙公网安备 33010602011771号