读书人

关于C++里面的new和delete

发布时间: 2012-08-09 15:59:21 作者: rapoo

关于C++里边的new和delete
下边四个选项中只有一个是对的,选出你的答案,并说明这个选项正确的理由,其他选项不对的理由


A,使用new操作符,可以动态分配全局堆中的内存资源
B,若P的类型由A强制转换为void*,那么执行语句delete P*时,类A的析构函数不会被调用
C,实现全局函数时,new和delete通常成对的出现在由一对匹配的花括号限定的语句块中
D,执行语句 A*P=new A[100]时,类A的构造函数只会被调用一次


“小屋阿萨”谢谢了,呵呵……

[解决办法]
B
[解决办法]
D 我操作了...是的, 调用100次
B 目有,如果是
A * p = new A;
void * t = (void *)p;
delete t; //肯定不用类A的析构函数
[解决办法]
选B

A * p = new A;
delete (void*)p; //不会调用A的析构

A,使用new操作符,可以动态分配全局堆中的内存资源
A也没发现哪里不对,单全局堆这个词第一次见 如果就是我们常说的堆内存,那应该没有问题

C,实现全局函数时,new和delete通常成对的出现在由一对匹配的花括号限定的语句块中
这句话也说的莫名奇妙 看不出错来 暂且认为对吧

D,执行语句 A*P=new A[100]时,类A的构造函数只会被调用一次
产生100个A对象 肯定调用100词构造函数

[解决办法]
A、win32里不区分全局堆和局部堆
B、A * p = new A; void * t = (void *)p; delete t; //肯定不用类A的析构函数
C、没看懂
D、显然会调用100次构造函数
[解决办法]

B正确,试过了;
C,D错误。

A哪里错了?

[解决办法]
说实话,这种考试和考级时喜欢出的细节题我感觉用处不大……哪怕能做100分也比不上一个自己编一个实用程序

读书人网 >C++

热点推荐