首页
新闻
论坛
群组
Blog
文档
下载
读书
Tag
网摘
搜索
.NET
Java
游戏
视频
人才
外包
培训
数据库
书店
程序员
欢迎您:
游客
| 退出
| 登录
注册
帮助
我的帖子
我参与的帖子
我的空间
我的网摘
CSDN
CSDN社区
C/C++
C++ 语言
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
生成帖子
置顶
推荐(加精)
取消推荐(加精)
锁定帖子
移动帖子
取消引用
结贴去...
管理菜单
页面风格切换
标准风格
老版本论坛
定位操作符new()的问题
[已结贴,结贴人:smilelance]
加为好友
发送私信
在线聊天
smilelance
smilelance
等级:
发表于:
2007-03-22 17:36:15
楼主
class Screen {
public:
void *operator new( size_t );
void *operator new( size_t, Screen* );
// ...
};
额外的参数可以被new 表达式中指定的定位实参初始化例如
void func( Screen *start ) {
Screen *ps = new (start) Screen;
// ...
}
大家帮我看看这个什么意思:“new (start) Screen;
”
问题点数:
20
回复次数:
6
显示所有回复
显示星级回复
显示楼主回复
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
adlay
www.adintr.com(到头来都是为他人做嫁衣裳)
等级:
发表于:
2007-03-22 17:39:25
1
楼 得分:
0
没什么意思, C++ 语法就是这样规定的
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
orc1984
Joueurs de basket-ball intrépides
等级:
发表于:
2007-03-22 17:42:11
2
楼 得分:
0
C++ 语法呀 沒什麼意思 lz 看下教程呢
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
snprintf
Zero
等级:
发表于:
2007-03-22 17:42:45
3
楼 得分:
1
创建一个Screen ,并把它放入从 start (地址) 开始的一个大小为 sizeof(Screen) 大小的内存空间中.
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
xlbdan
流浪剑客
等级:
发表于:
2007-03-22 18:17:57
4
楼 得分:
19
“new (start) Screen;”
这是定位new操作
Screen *ps = new (start) Screen;
表示在已经开辟好的内存区start中为堆对象Screen申请一个内存
也就是说,如果start占100个字节
你现在从它的第1个字节开始,往里面写入Screen
这样做今后要释放内存的时候有麻烦,如果Screen里面有指针,并开辟了空间,那么delete ps会调用析构函数,而start中的那块内存也丢失了,因为ps也指向了start.所以要避免这种情况,就要先ps-> ~Screen()这样显示的调用Screen的析构函数,再delete []start
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
smilelance
smilelance
等级:
发表于:
2007-03-23 09:14:57
5
楼 得分:
0
恩恩,楼上讲得和c++ primer上差不过,不过被你这么一整理我才明白,看起来自学还是没有高手带得快啊,哈哈,好的,楼上的GG,分数给你了哦,非常感谢啊
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
xlbdan
流浪剑客
等级:
发表于:
2007-03-26 11:50:00
6
楼 得分:
0
呵呵,一起学习!
修改
删除
举报
引用
回复
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
结贴去...
管理菜单
页面风格切换
标准风格
老版本论坛
网站简介
-
广告服务
-
网站地图
-
帮助
-
联系方式
-
诚聘英才
-
English
-
问题报告
北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
abc推荐给好友