| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 706 人关注过本帖
标题:重载new里的问题
只看楼主 加入收藏
lyj23
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:168
专家分:140
注 册:2010-10-31
结帖率:86.21%
收藏
已结贴  问题点数:10 回复次数:4 
重载new里的问题
我在书上看到一个new的重载
void* operator new(size_t)
{cout<<"Alloc……"<<endl;
throw 47;}

这个重载为什么会可以?如果调用这个重载,new本身的功能不就没了?
还有这个怎么调用?第一个参数是无符号整型,那什么时候会调用重载函数,什么时候不掉用?

跪求高手!光临本贴
搜索更多相关主题的帖子: void 
2011-05-28 10:42
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:7 
这个重载为什么会可以?
--- 你觉得为什么不可以,或者说,你觉得这段代码哪里有语法错误?

如果调用这个重载,new本身的功能不就没了?
--- 有没有,那是程序逻辑问题,这取决于程序员想干什么。

还有这个怎么调用?
---
程序代码:
#include <iostream>
using namespace std;

void* operator new(size_t)
{
    cout << "Alloc……" << endl;
    throw 47;
}

int main()
{
    try {
        new int;
    } catch(int e) {
        cout << e << endl;
    }

    return 0;
} 

第一个参数是无符号整型,那什么时候会调用重载函数,什么时候不掉用?
--- 默认的operator new第一个参数当然是无符号类型,难道你还能分配 -1 个字节?
当需要调用全局operator new时候调用,不需要时不调用。这个问题有点傻。
2011-05-28 11:05
lyj23
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:168
专家分:140
注 册:2010-10-31
收藏
得分:0 
额,书上好像说过重载运算符不能改变运算符本来的……

我是说这个new重载以后,调用它,那比如new int a;那就算不抛出异常

a的内存会不会被创建呢?
里面不写一遍::operator new(a)  //类似delete的写法
也可以吗?
2011-05-28 15:05
lyj23
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:168
专家分:140
注 册:2010-10-31
收藏
得分:0 
高手COME ON !跪求高手
2011-05-29 17:16
小言与西加加
Rank: 1
等 级:新手上路
帖 子:3
专家分:2
注 册:2011-6-2
收藏
得分:0 
重载的意义在于为运算符添加我们需要但本身并没有的功能,原先的功能仍存在.
你重载的这个new不进行其它操作,只输出一句话,不创建任何东西!
2011-06-02 20:53
快速回复:重载new里的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025012 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved