这是一个简单的矩形区域计算cpp代码,我有一些问题:
#include <iostream>
#include <conio.h>
using namespace std;
class CRectangle
{
int *width, *heigth;
public:
CRectangle(int, int);
~CRectangle();
int area() { return (*width * *heigth);}
};
CRectangle :: CRectangle(int a, int b)
{
width = new int;
heigth = new int;
*width = a;
*heigth = b;
}
CRectangle :: ~CRectangle()
{
delete width;
delete heigth;
}
void main()
{
CRectangle rect1(3,4), rect2(5,6);
cout << "rect1 area = " << rect1.area() << "\n";
cout << "rect2 area = " << rect2.area();
getch();
}
- 为什么在这种面向对象的代码中我们使用指针,我的意思是有什么优势?
rect1(3,4)
在创建我们创建的对象之后的这段代码中rect2(5,6)
,这样做,逻辑上(我认为)5和6被替换,而不是宽度和高度指向的内存部分中的3和4,所以3和4不再可用,但他们是。
请解释到底发生了什么?