以下是 C 語言中類別相關概念的詳細內容,涵蓋物件類別、基本結構、基本使用及分解結構。
struct
關鍵字定義結構,指定結構名稱和成員。.
)訪問結構體的成員;使用箭頭運算符(->
)訪問指向結構體的指標的成員。malloc
等函數動態分配結構體內存,適用於不確定大小的數據情況。free
釋放內存,防止內存泄漏。sizeof
獲取結構的大小,注意內存對齊的影響。實作練習(長方體體積計算):
#include <iostream>
using namespace std;
class Cuboid {
public:
void set_values(int, int, int);
int volume() { return x * y * z; }
private:
int x, y, z;
};
void Cuboid::set_values(int a, int b, int c) {
if (a <= 0 || b <= 0 || c <= 0) {
cout << "長寬高應大於0" << endl;
return;
}
x = a;
y = b;
z = c;
}
int main(void) {
Cuboid C1;
int x, y, z;
cout << "請輸入長、寬、高: ";
cin >> x >> y >> z;
C1.set_values(x, y, z);
cout << "長方體的體積: " << C1.volume() << endl;
return 0;
}
說明:
這段 C++ 程式碼定義了一個 Cuboid
類,包含設置長方體維度和計算體積的功能。類中有私有變數 x
、y
、z
表示長、寬、高,並透過 set_values
函數檢查輸入是否有效。主函數中創建了 Cuboid
物件,提示用戶輸入維度,並調用相應函數計算和輸出體積。整體展示了物件導向編程的基本概念,如封裝和數據驗證。
實作練習(座標相加乘):
#include <iostream>
using namespace std;
class Coordinate {
public:
int x, y;
Coordinate ( ) {};
Coordinate (int, int );
Coordinate operator + (Coordinate);
};
Coordinate:: Coordinate (int a, int b){
x=a;
y=b;
}
Coordinate Coordinate:: operator + (Coordinate coord) {
Coordinate temp;
temp. x = x + coord. x;
temp. y = y + coord. y;
return temp;
}
int main (void)
{
Coordinate C1(2, 3), C2 (1,2);
Coordinate C3;
C3 = C1 + C2;
cout<<C3.x<<","<<C3.y<<endl;
return 0;
}
說明:
程式碼定義了 Coordinate
類,表示二維坐標點。類中包含兩個公有成員變數 x
和 y
,以及一個自定義的加法運算符重載。構造函數用於初始化坐標,重載的 operator +
函數將兩個坐標相加並返回一個新的 Coordinate
對象。在主函數中,創建了兩個坐標 C1
和 C2
,計算它們的和 C3
,並輸出結果。整個程式展示了物件導向編程中的運算符重載技術。
!!今天內容是跟著第一次學C++就上手第二版第14章前半段一起學習的!!
打程式碼時總是有些錯誤的地方導致一直跑不出來,最後我用了ChatGPT幫我看看到底是哪個環節錯誤。
雖然是跟著書本一起做學習的但我之後用了不同的程式碼來做修改,也有達到一樣的答案!很開心也希望未來可以繼續順利地執行下去。