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

#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];这样可以,因为都是在运行阶段才进行。
原文地址:https://www.cnblogs.com/zhumengdexiaobai/p/9010602.html