Я хотел понять, как работают окна (новый прямоугольник (30, 20)) в следующем коде

Так что я знаю, что new а также delete неявно вызвать конструктор, но я не мог разобраться, как window(new rectangle (30, 20)) работает.

#include <iostream>
using namespace std;

class Rectangle
{
private:
double height, width;
public:
Rectangle(double h, double w) {
height = h;
width = w;
}
double area() {
cout << "Area of Rect. Window = ";
return height*width;
}
};

class Window
{
public:
Window(Rectangle *r) : rectangle(r){}
double area() {
return rectangle->area();
}
private:
Rectangle *rectangle;
};int main()
{
Window *wRect = new Window(new Rectangle(10,20));
cout << wRect->area();

return 0;
}

-2

Решение

Windowконструктор принимает один параметр, указатель на Rectangle,

new Rectangle(10,20)

Это выражение создает new экземпляр Rectangle класс, давая вам указатель на new экземпляр класса.

Так:

Window *wRect = new Window(new Rectangle(10,20));

После получения указателя на новый экземпляр Rectangle класс, указатель передается Windowконструктор, для new экземпляр Window учебный класс.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]