首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

创建类对象时 用ClassA a;与ClassA* a = new ClassA()的区别解决方案

2012-02-06 
创建类对象时 用ClassA a与ClassA* a new ClassA()的区别如题,*a的可以用deletea去清除内存,而a呢,怎

创建类对象时 用ClassA a;与ClassA* a = new ClassA()的区别
如题,
*a   的   可以用delete   a;去清除内存,而   a   呢,怎么清除内存。

另外   用a   的时候,在引用后,在编译的时候会提示没被初始化的变量,是否会出错呢。
请指教。

[解决办法]
ClassA a 声明ClassA的变量,但没有付值
ClassA* a = new ClassA()声明ClassA的新实例
[解决办法]
*a 的 可以用delete a;去清除内存,
而 a 呢,是在创建这个函数返回时进行清除的。
如在fun()这个函数中ClassA a;在fun()退出时就清除。
另外 用a 的时候,在引用后,在编译的时候会提示没被初始化的变量,是否会出错呢,不会。就和a一样用,当然,a不能用的东西引用也不能用了。
[解决办法]
ClassA a;内存分配在栈上,系统自动释放内存
ClassA* a = new ClassA();内存分配在堆上,需要delete a;
[解决办法]
还有:
ClassA* a = new ClassA()在堆中分配空间
ClassA a在栈或其他地方分配空间
[解决办法]
补充问一下子,这两个计算方法都应该应用在什么场合上,有没有什么大致规律与准则呢?
--------------
一般都用new

热点排行