c++有三种方法建立对象ios
结合代码来看c++
1 #include <iostream> 2 using namespace std; 3 class Test { 4 5 private: 6 public: 7 add() 8 { 9 int x,y,sum; 10 x=5; 11 y=5; 12 sum=x+y; 13 cout<<sum<<endl; 14 } 15 }; 16 void main() 17 { 18 Test test1; //栈中分配 ,由操做系统进行内存的分配和管理 19 Test test2 = Test; //栈中分配 ,由操做系统进行内存的分配和管理 20 Test *test3=new Test(); //堆中分配 ,由管理者进行内存的分配和管理,用完必须delete(),不然可能形成内存泄漏 21 test1.add(); 22 test2.add();//"." 是结构体成员引用 23 test3->add();//"->"是指针引用 24 delete(test3); 25 system("pause"); 26 }
第一种和第二种没什么区别,一个隐式调用,一个显式调用,二者都是在进程虚拟地址空间中的栈中分配内存。栈是系统数据结构,对于线程/进程是惟一的,它的分配和释放由操做系统决定,不须要由开发者来管理。在执行函数时,函数内局部变量的存储单元能够在栈上建立,函数执行完毕,系统会自动释放这些存储单元。第三种使用了new,在堆中分配了内存,堆上的内存分配,亦称动态内存分配。程序在运行的期间用malloc申请的内存,这部份内存由程序员本身负责管理,其生存期由开发者决定:在什么时候分配,分配多少,并在什么时候用free来释放该内存。这是惟一能够由开发者参与管理的内存。使用的好坏直接决定系统的性能和稳定。注意:栈中内存的分配和管理由操做系统决定,而堆中内存的分配和管理由管理者决定。程序员
咱们须要的内存不多,你又能肯定你到底须要多少内存时,用栈。当你须要在运行时才知道你到底须要多少内存时,请用堆。数据结构
关于new建立类对象特色:函数