What will be the output of the following C++ code?
#include <iostream>
using namespace std;
struct A
{
virtual ~A()
{
cout << "~A()" << endl;
}
void operator delete[](void* p, size_t)
{
cout << "A :: operator delete[]" << endl;
delete [] p;
}
};
struct B : A
{
void operator delete[](void* p, size_t)
{
cout << "B :: operator delete[]" << endl;
delete [] p;
}
};
int main()
{
A* bp = new B[3];
delete[] bp;
};
#include <iostream>
using namespace std;
struct A
{
virtual ~A()
{
cout << "~A()" << endl;
}
void operator delete[](void* p, size_t)
{
cout << "A :: operator delete[]" << endl;
delete [] p;
}
};
struct B : A
{
void operator delete[](void* p, size_t)
{
cout << "B :: operator delete[]" << endl;
delete [] p;
}
};
int main()
{
A* bp = new B[3];
delete[] bp;
};A. ~A()
B. A :: operator delete[]
C. B :: operator delete[]
D. Warning
Answer: Option D

Join The Discussion