C++运算符重载问题10

预测产量?

null

#include<stdlib.h>
#include<stdio.h>
#include<iostream>
using namespace std;
class Test {
int x;
public :
void * operator new ( size_t size);
void operator delete ( void *);
Test( int i) {
x = i;
cout << "Constructor called " ;
}
~Test() { cout << "Destructor called " ; }
};
void * Test::operator new ( size_t size)
{
void *storage = malloc (size);
cout << "new called " ;
return storage;
}
void Test::operator delete ( void *p )
{
cout<< "delete called " ;
free (p);
}
int main()
{
Test *m = new Test(5);
delete m;
return 0;
}


(A)

new called
Constructor called
delete called
Destructor called

(B)

new called
Constructor called
Destructor called
delete called

(C)

Constructor called
new called
Destructor called
delete called

(D)

Constructor called
new called
delete called
Destructor called

答复: (B) 说明: 考虑下面的语句

    Test *ptr = new Test;  

在上面的陈述中实际上有两件事发生——内存分配和对象构造;这个 新关键字 他对这两者都负有责任。这个过程的一个步骤是打电话 新接线员 为了分配内存;另一步是实际调用构造函数。 新接线员 只允许我们更改内存分配方法,但不使用构造函数调用方法。 关键词新 负责调用构造函数,而不是 新接线员 . 这个问题的小测验

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享