在c++的类中,我如果要访问类中的成员变量或函数,有2种方法,第一种就是定义一个一个对象,如:
Class A ...
A aa;
aa.xxx();
另外一种就是
Class B ...
B *aa = new B();
aa->xxx();
Class A ...
A aa;
aa.xxx();
另外一种就是
Class B ...
B *aa = new B();
aa->xxx();
在java中,A a = new A()
c++中等同于 A a;
另外在c++中还有另外一种声明和实例化就是使用指针,如:A* a= new A()
c++中的A a;就已经构造了对象;
而在java中 A a; 就是声明,还没有分配空间
在c++中就非常的灵活,A a;在栈(stack)上分配空间,静态 A * a= new A;在堆(heap)上分配空间,动态
栈上空间自动回收,堆空间需要程序员手动回收
静态分配内存适合于编译时就已经可以确定需要占用内存多少的情况,而在编译时不能确定内存需求量时可使用动态分配内存;但静态分配内存的运行效率要比动态分配内存的效率要高,因为动态内存分配与释放需要额外的开销;动态内存管理水平严重依赖于程序员的水平,如果处理不当容易造成内存泄漏。
动、静态内存分配比较可以知道动态内存分配相对于静态内存分配的特点:
1、不需要预先分配存储空间;
2、分配的空间可以根据程序的需要扩大或缩小。
要实现根据程序的需要动态分配存储空间,就必须用到malloc函数.
ps: C++: A a =new A(); 会报错
A *a=new A();
a.run();会报错(a->run())
原文地址:http://blog.csdn.net/youketudou/article/details/6624145