C++
Topic: struct&class
Lecturer: Lemon
物件導向
-
封裝性
-
繼承性
-
多型
物件導向
結構(Struct)
#include <iostream>
using namespace std;
struct People {
//接下來會在裡面放咚咚
};
//記得打分號ㄛ
int main() {
People yeedrag; // yeedrag就是一個People物件
}
語法(寫在main外面)
之後跟int一樣,作為宣告的類別
結構(Struct)
封裝:我們可以把值放在結構中
取用時使用.(變數名)
#include <iostream>
using namespace std;
struct People {
int age, weight, height;
};
//記得打分號ㄛ
int main() {
People yeedrag; // yeedrag就是一個People物件
yeedrag.age = 16;
yeedrag.weight = 8e7;
yeedrag.height = 7741;
}
結構(Struct)
封裝:我們可以把函式放在結構中
取用時使用.(函式名)
#include <iostream>
using namespace std;
struct People {
int age, weight, height;
int BMI() {
return weight/(height*height);
}
};
//記得打分號ㄛ
int main() {
People yeedrag; // yeedrag就是一個People物件
yeedrag.age = 16;
yeedrag.weight = 8e7;
yeedrag.height = 7741;
cout << yeedrag.BMI();
}
類別(Class)
語法(寫在main外面)
之後跟int一樣,作為宣告的類別
#include <iostream>
using namespace std;
class People {
//哈哈我用複製的
};
//記得打分號ㄛ
int main() {
People yeedrag; // yeedrag就是一個People物件
}
類別(Class)
封裝:我們可以把值放在類別中
和struct不一樣的是
我們有public、private、protected
#include <iostream>
using namespace std;
class People {
private:
int weight;
public:
int age;
protected:
int height;
};
//記得打分號ㄛ
int main() {
People yeedrag; // yeedrag就是一個People物件
yeedrag.age = 16;
//yeedrag.weight = 8e7; 不合法
//yeedrag.height = 7741; 不合法
}
類別(Class)
public:可以直接存取
private:不能直接存取
protected:可以被其繼承者存取(有緣再講)
#include <iostream>
using namespace std;
class People {
private:
int weight;
public:
int age;
protected:
int height;
};
//記得打分號ㄛ
int main() {
People yeedrag; // yeedrag就是一個People物件
yeedrag.age = 16;
//yeedrag.weight = 8e7; 不合法
//yeedrag.height = 7741; 不合法
}
類別(Class)
雖然private、protected不能直接存取
但可以透過類別內函式取用、修改
#include <iostream>
using namespace std;
class People {
private:
int weight;
public:
int age;
int get_weight() {
return weight;
}
void set_weight(int w) {
weight = w;
}
};
//記得打分號ㄛ
int main() {
People yeedrag; // yeedrag就是一個People物件
yeedrag.age = 16;
yeedrag.set_weight(100000);
cout << yeedrag.get_weight();
return 0;
}
建構式
無論class 抑或 struct 都有constructor
作用是把物件初始化
語法如下(用自己的名字當函數):
#include <iostream>
using namespace std;
class Point {
private:
int x, y, z;
public:
//用自己的名字當函數
Point(int _x, int _y, int _z): x(_x), y(_y), z(_z) {
//這裡面也可以放咚咚
}
};
//記得打分號ㄛ
int main() {
Point A(1, 3, 2); // A是一個Point物件
}
建構式
適當的使用建構式可以使程式更加易讀
但在平常寫Code
或者在打競賽的時候
可能也不一定會用到w
你們就當補充ㄅ
BTW
這些東西顯然一節課講不完
但如果想了解更多
可以查運算子多載、類別繼承
這樣你的code就會很毒瘤讚
範例
請利用struct或class實作分數的加減法(挑戰題)
請利用struct或class實作分數比大小
沒有Judge QAQ
講師段考燒雞QAQ
ㄅㄅ
Struct&Class
By lemonilemon
Struct&Class
- 222