QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 867|回复: 5

请问一个c++对象构建的问题。

[复制链接]
发表于 2005-11-8 00:37:30 | 显示全部楼层 |阅读模式
1.  Class myclass(1);


2.   Class* myclass = new Class(1);


有什么区别吗? 我只知道 new Class(1) 是在堆上动态分配内存,
发表于 2005-11-8 09:26:47 | 显示全部楼层
1是在栈上
2是在堆上
回复

使用道具 举报

 楼主| 发表于 2005-11-8 15:59:58 | 显示全部楼层
谢谢!
除了存储的地方不一样,和访问符不一样( . , ->)之外,还有其他区别吗?
用哪种好?

为什么我多见是用 new 的呢?
回复

使用道具 举报

发表于 2005-11-9 13:16:02 | 显示全部楼层
严格来说我说的不对
1如果是全局变量或者是静态变量,也是在堆上。只有是函数的自动变量时才是
在栈上。

没什么那种好,对于对象间嵌套比较复杂的时候,个人觉得还是new好。
回复

使用道具 举报

发表于 2005-11-10 05:30:13 | 显示全部楼层
通常而言,“堆”内存特指用 new/delete 或者 malloc/free 操作的、运行时动态分配的内存部分。
回复

使用道具 举报

发表于 2005-11-11 12:08:59 | 显示全部楼层
对1来说,变量myclass是在内存中的一个实际对象.
对2来说,它只是通过声明在栈上的一个对象引用,实际的对象是由后面的new Class(1)语句产生的一个实际对象,并且这个实际对象由引用myclass指向!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-3 04:16 , Processed in 0.056955 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表