C++ 使用結(jié)構(gòu)體表示矩形

2023-03-20 15:57 更新

現(xiàn)在假設(shè)我們要創(chuàng)建一個結(jié)構(gòu)體來表示一個矩形。問題在于,我需要提供哪些信息來指定一個矩形?為了簡化問題,我們假設(shè)矩形是垂直方向或水平方向的,沒有傾斜角度。

存在幾種可能:我可以指定矩形的中心(兩個坐標)和大小(寬度和高度),我也可以指定矩形的一個角和矩形的大小,或是指定兩個相對的角。

現(xiàn)有程序中最常見的選擇是指定矩形的左上角和大小。在C++中,我們定義一個結(jié)構(gòu),包含著一個Point類型和兩個double類型。

struct Rectangle {
  Point corner;
  double width, height;
};

注意到一個結(jié)構(gòu)中可以包含另一個結(jié)構(gòu)。事實上這種情況很常見。當(dāng)然,這意味著為了創(chuàng)建一個Rectangle,我們得先創(chuàng)建一個Point:

Point corner = { 0.0, 0.0 };
Rectangle box = { corner, 100.0, 200.0 };

這段代碼創(chuàng)建了一個新的Rectangle結(jié)構(gòu)并對實例變量進行了初始化。下圖展示了這些語句的效果。

enter image description here

我們可以用普通的方式來存取width和height:

box.width += 50.0;
cout << box.height << endl;

為了訪問corner的實例變量,我們使用了一個臨時變量:

Point temp = box.corner;
double x = temp.x;

或者我們可以把兩條語句組合在一起:

double x = box.corner.x;

這條語句最好是從右向左讀: "從box的corner中抽取x,然后把它賦給局部變量x。"

當(dāng)我們談到組合時,我必須指出,實際上你可以同時創(chuàng)建Point和Rectangle:

Rectangle box = { { 0.0, 0.0 }, 100.0, 200.0 };

最里面的大括號中是點corner的坐標;它們組成了新的Regtangle中三個值中的第一個。這條語句是嵌套結(jié)構(gòu)的一個例子。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號