zoukankan      html  css  js  c++  java
  • 关于对象的动态建立和释放

    #include<iostream>
    //对象的动态建立和释放
    using namespace std;
    
    class Object
    {
    public:
    	Object()
    	{
    		cout<<"构造函数
    ";
    	};
    	void prinT()
    	{
    		cout<<"woshi dayinhanshu 
    ";
    	}
    	~Object()
    	{
    		cout<<"析构函数
    ";
    	}
    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<<"构造函数
    ";
    	};
    	void prinT()
    	{
    		cout<<"woshi dayinhanshu 
    ";
    	}
    	~Object()
    	{
    		cout<<"析构函数
    ";
    	}
    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");
    }
    

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

  • 相关阅读:
    linux学习 建立静态库,动态库,写简单的makefile
    C++中顶层const和底层const
    BDB (Berkeley DB)数据库简单介绍(转载)
    Java中Map的使用
    Spring MVC 3 深入总结
    nvl,空时的推断和取值
    java堆栈 (转)
    mybatis--面向接口编程
    HDU 4888
    socket编程——一个简单的样例
  • 原文地址:https://www.cnblogs.com/xiaochige/p/6574803.html
Copyright © 2011-2022 走看看