码迷,mamicode.com
首页 > 其他好文 > 详细

关于对象的动态建立和释放

时间:2017-03-18 17:37:15      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:system   prot   highlight   字符数组   pre   析构   报错   delete   stream   

#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");
}

  一定要记住数组的释放的表达方法。

关于对象的动态建立和释放

标签:system   prot   highlight   字符数组   pre   析构   报错   delete   stream   

原文地址:http://www.cnblogs.com/xiaochige/p/6574803.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!