मैं आज नौकरी के लिए इंटरव्यू देने गया और मुझे यह दिलचस्प सवाल दिया गया।
मेमोरी लीक और तथ्य के अलावा कोई वर्चुअल डोर नहीं है, यह कोड क्रैश क्यों होता है?
#include <iostream>
//besides the obvious mem leak, why does this code crash?
class Shape
{
public:
virtual void draw() const = 0;
};
class Circle : public Shape
{
public:
virtual void draw() const { }
int radius;
};
class Rectangle : public Shape
{
public:
virtual void draw() const { }
int height;
int width;
};
int main()
{
Shape * shapes = new Rectangle[10];
for (int i = 0; i < 10; ++i)
shapes[i].draw();
}
Shape **
यह आयतों की एक सरणी की ओर इशारा करता है। तब पहुंच को आकार देना चाहिए था [i] -> ड्रा ();
->
एक गलती एक संपादक द्वारा बनाया गया था।