iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 12
1
Software Development

C++ 30天屠龍記系列 第 12

C++ 30天屠龍記(第12天): 對象式編程

  • 分享至 

  • xImage
  •  

Class(藍圖)

在C++中,Class定義了一件物件的特點,類別的定義包括了

  • 資料的屬性(變數)
  • 和這件物件的行爲(就是函數)。

我們之前學過的資料結構可以包含一系列的數值,Class 更進一步。

你可以想象Class 為物件的設計模板,我們可以在這裏創造物件的屬性,例如説我們如果要設計一部汽車,那麽當中會有汽車的廠牌,車名以及馬力等等。也會有函數去獲得汽車資訊。

class Car{
	string brand;
    int horsePower;
public:
    Car(string brands= "Toyota",  int horsePowers = 0){
        brand = brands;
        horsePower = horsePowers;
    }
    string getInformation(){
       cout << "品牌: " << brand << " 馬力: " << horsePower <<endl;
    }  
};

物件

物件就是類別的實例,我們可以利用汽車藍圖產生各種各樣的“車子”,這些車子就是物件了

auto toyota = make_unique<Car>("Toyota",200,"rav4");
rav4 -> getInformation();
  • make_shared都可以

繼承

某種情況下,一個類別會有「子類別」。子類別會獲得所有父類別屬性并且加上自己的屬性

  • 父類別需要改動屬性為protected,讓子類別去讀
class Car{
protected:
  	string brand;
    string type;
    int horsePower;
	//...其他代碼
};
class Truck extends Car{
    string capacity;
};

複寫

可以複寫掉父類別的函數

  • 以下的例子因爲Truck有多一個屬性,我們需要複寫父函數
  • 需要改動父函數為virtual
  • 需要改動子函數為override
class Car{
	//...其他代碼
    string virtual getInformation(){
       cout << "品牌: " << brand << " 馬力: " << horsePower << endl;
    }
};

class Truck extends Car{
    string capacity;
public:
    string overide getInformation(){
       cout << "品牌: " << brand << " 馬力: " << horsePower << "容量" << capacity << endl;
    }
};  

上一篇
C++ 30天屠龍記(第11天): 指針資料結構
下一篇
C++ 30天屠龍記(第13天): Map
系列文
C++ 30天屠龍記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言