回 帖 发 新 帖 刷新版面

主题:类实例和类指针的用法?

比如有个A类,可以A a;生成类实例后使用A的各种成员变量和函数,也可以A *a生成类指针然后 a = new A;来生成类实例。到底哪种方法好呢?还是说他们的用法不同呢?

回复列表 (共1个回复)

沙发

A a;
A *pa = new A;
不同;
1)如果a是局部变量,a放在程序的栈区.如果a是全局变量.a会被放在程序的静态区.
2) pa本身同上.pa指向的对象既(*pa)被放在程序的堆区. 
两种表示方法都可以..只是2)比较耗时 因为new也是去调用malloc 申请内存空间 .这样必定消耗时间
在delete p时也会花时间去free
但是也有它的好处 :你可以控制它的生命周期..在你不需要它的时候可以释放它.从而为程序空出内存
而1)中 a的生命不受你控制..受程序流程控制(弹栈和压栈)..当然全局的.它会一直保持到程序退出
所以这说白了也是空间/时间的平衡.具体问题需要具体分析

我来回复

您尚未登录,请登录后再回复。点此登录或注册