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

1-new对象与直接构建对象

时间:2018-05-08 20:59:37      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:长度   自动   ack   选择   size   text   tac   return   include   

#include <iostream>
using namespace std;

class A {
	public:
	A(){}
	A (int a){
		this->a = a;
	}
	public:
		int a;
	    int b;
}; 

int main(){
	A a = A(1); 		//创建的对象 
	A *b = new A(2); 	//创建的指针 
	A c = A(); 
	cout << a.a << endl;	
	cout << b->a << endl;
	return 0;
}

  

c++里面, 创建对象,  ClassName object(初始化参数);在Stack栈里面分配空间,自动释放。
或者用 ClassName object=new ClassNam();在heap堆里面分配空间,要手动释放。
当你不确定需要多大的时候用NEW
类里面用NEW实现多态, 有的时候解决类
接口也用NEW, 这个一下说不清楚
用NEW有一定内存泄露的风险, 可以考虑用
1:声明分配内存是在编译阶段进行的,new分配内存是在运行阶段进行的
2:声明被放在栈中,new被分配在堆中或自由存储区中
3:声明创建数组,在编译阶段是就为他分配内存。
new创建在运行阶段 需要创建时就创建,不需要创建时还可以在运行时选择数组长度,
这就是因为int i;cin>>i;int a[i];不成功的原因,因为a[i]要在编译阶段就分配好内存,但是i在运行时才能知道
int i;cin>>i;int * a=new int[i];这样可以,因为都是在运行阶段才进行。

1-new对象与直接构建对象

标签:长度   自动   ack   选择   size   text   tac   return   include   

原文地址:https://www.cnblogs.com/zhumengdexiaobai/p/9010602.html

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