Так что я знаю, что 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;
}
Window
конструктор принимает один параметр, указатель на Rectangle
,
new Rectangle(10,20)
Это выражение создает new
экземпляр Rectangle
класс, давая вам указатель на new
экземпляр класса.
Так:
Window *wRect = new Window(new Rectangle(10,20));
После получения указателя на новый экземпляр Rectangle
класс, указатель передается Window
конструктор, для new
экземпляр Window
учебный класс.
Других решений пока нет …