一道笔试题

bsnry 2012-05-24 12:16:22
遇到一个奇怪的笔试题目

题目大概如下:

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*,那么是无法调用析构函数的



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

...全文
203 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
airwolf1216 2012-05-25
  • 打赏
  • 举报
回复
这题好难 我第一次看到::new(data+i)T;

这种写法
我有几个疑问
第一、::new是不是调用的全局的new(即没有被重载的new)?
第二、::new(data+i)T;这货解开来,是不是data+i=new T;????

pathuang68 2012-05-24
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

1,data =(char*) new [sizeof(T) *( len+ len/2));
真心不知道是C学到不好还是C++学的不好。

改为:
data =(char*) new char[sizeof(T) *( len+ len/2));

2, 你丫的没记录下len,谁知道有几个T?

3,Constructor & Destroy,重复调用怎么办? 没点判……
[/Quote]

++
qq120848369 2012-05-24
  • 打赏
  • 举报
回复
1,data =(char*) new [sizeof(T) *( len+ len/2));
真心不知道是C学到不好还是C++学的不好。

改为:
data =(char*) new char[sizeof(T) *( len+ len/2));

2, 你丫的没记录下len,谁知道有几个T?

3,Constructor & Destroy,重复调用怎么办? 没点判断? len是总长度,used_len规定一下已构造的长度?

4,Destroy注定错了? 开辟的char,结果当做T来delete[],这在C++里是不行的,you know?

5,没析构函数? 想泄露吗?
nice_cxf 2012-05-24
  • 打赏
  • 举报
回复
data =(char*) new [sizeof(T) *( len+ len/2));
应该是
data =(char*) new char[sizeof(T) *( len+ len/2)];
Constructor里面new,格式也是错的,不知道想做什么,所以也不知道该怎样改 ,并且都没赋值,以后怎么delete?
nature19862001 2012-05-24
  • 打赏
  • 举报
回复
你基本都猜对了。。。
nature19862001 2012-05-24
  • 打赏
  • 举报
回复
你基本都猜对了。。。
羽飞 2012-05-24
  • 打赏
  • 举报
回复
for(int i=0;i<len;i++)
::new(data+i)T;

这个len貌似没定义
羽飞 2012-05-24
  • 打赏
  • 举报
回复
我认为delete的时候强制转换为char *是正确的,因为就是按照这种类型申请的

new [sizeof(T) *( len+ len/2));-->
new [sizeof(T) *( len+ len/2)]; new不接数据类型对不对?请大神指点?
没看出来多len/2有什么用或有什么错误
j8daxue 2012-05-24
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]
傻逼才去学模板.
面试题这些其实不要纠结.
重要的是思维!!!快从应试教育中跳出来!
[/Quote]
....STL表示不高兴
liutengfeigo 2012-05-24
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20120507/12/5ac3a8af-5b2c-473d-9865-bbd5b48e6506.html
这么好的帖子不好好看.
唉,木有办法.社会总是垃圾信息一大堆.
自己不擅长分析,注定废.
liutengfeigo 2012-05-24
  • 打赏
  • 举报
回复
傻逼才去学模板.
面试题这些其实不要纠结.
重要的是思维!!!快从应试教育中跳出来!
haxer 2012-05-24
  • 打赏
  • 举报
回复
没问题才怪。。
bsnry 2012-05-24
  • 打赏
  • 举报
回复
1和2 是我打字漏了,不好意思啊

但是那个len/2 是怎么回事???




[Quote=引用 6 楼 的回复:]
1,data =(char*) new [sizeof(T) *( len+ len/2));
真心不知道是C学到不好还是C++学的不好。

改为:
data =(char*) new char[sizeof(T) *( len+ len/2));

2, 你丫的没记录下len,谁知道有几个T?

3,Constructor & Destroy,重复调用怎么办? 没点判断……
[/Quote]
企业公司软件测试面试笔试题集合 软件测试面试题 (测试基础).doc 01_企业面试试卷(综合).doc 01_企业面试试卷(综合)_参考答案.doc 04_企业面试试卷(测试基础).doc 04_企业面试试卷(测试基础)_参考答案.doc 500强公司面试的经典正确与错误回答对比!!! 看看你的弱点.doc C面试题.txt Java初学者都必须知道的六大问题.doc 百度笔试题.txt 北京博彦科技笔试+面试.doc 北京大学计算机科学技术研究所.doc 波尔世通的笔试+面试.doc 测试人员面试题.doc 测试题.doc 常见的测试题(转贴).doc 传视数码公司的面试题.doc 汉端笔试题(7页).doc 合力金桥的笔试题.doc 华为面试题.doc 经典逻辑题.ppt 联合网视面试题.doc 美国英网软件公司题目.doc 面试考题(腾讯,招行等等).txt 某公司的面试试题.doc 奇虎面试题.doc 千像互动的笔试.doc 清华同方开发的面试题 (有兴趣的看一下了 !).doc 缺陷的等级划分,一个经常被问到的问题.doc 软件测试工程师笔试试题(大集合).doc 软件测试工程师测试试题大集合(二)包括答案.doc 软件测试工程师试题发布版.doc 软件测试试题.doc 软件评测复习知识点(小颖).doc 软通动力面试笔答.doc 瑞星笔试题(15道).doc 神州泰岳测试试题(笔试)转贴.doc 时力科技面试题.doc 瓦瑟笔试题(限男性).doc 喜安科 面试题.doc 性能计算公式.txt 亚控科技比试题.doc 一道测试notepad笔试题.doc 一道数据库的笔试题目.doc 一个外包测试公司的笔试题!.doc 一家通讯公司的面试题目.doc 英文自我介绍大全.doc 英语面试.doc 英语面试题.doc 有意思的逻辑题.doc 中软的面试题(转贴).doc

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧