打印

网易笔试题

[复制链接]
1167|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sinadz|  楼主 | 2012-5-24 22:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
题目大概如下:

template<typename T>
class Test
{
public:
Test(
int len)
{
data
=(char*) new [sizeof(T) *( len+ len/2));


}


void Constructor()
{
for(int i=0;i<len;i++)
::
new(data+i)T;

}

void Destroy()
{
delete [](
char*)data;

}



T
* data;
};

今早笔试遇到的,让我改正,我觉得问题有2个,
1.分配大小哪里,为什么要多出 len/2个来???
2.利用placement new的时候,少了len2/
3.析构的时候,由于转换为char*,那么是无法调用析构函数的



大家认为这个代码有什么问题, 题目大概是这个样子的

相关帖子

沙发
yybj| | 2012-5-24 22:57 | 只看该作者
我认为delete的时候强制转换为char *是正确的,因为就是按照这种类型申请的

使用特权

评论回复
板凳
火箭球迷| | 2012-5-24 23:10 | 只看该作者
for(int i=0;i<len;i++)
::new(data+i)T;

这个len貌似没定义

使用特权

评论回复
地板
pkat| | 2012-5-25 15:15 | 只看该作者
很基础的C++题目

使用特权

评论回复
5
秋天落叶| | 2012-5-25 23:19 | 只看该作者
这论坛里的面试笔试题还真不少

使用特权

评论回复
6
baidudz| | 2012-5-25 23:26 | 只看该作者
LZ基本上已经找到问题了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

304

主题

2313

帖子

0

粉丝