iT邦幫忙

2022 iThome 鐵人賽

DAY 16
0
Software Development

C++超級菜鳥也可以懂的物件導向攻略系列 第 16

Day16 - C++物件導向 int\string轉換() 應用和刷題

  • 分享至 

  • xImage
  •  

前言:

前三篇物件導向類別Class物件Object建構子Constructor歡迎接續觀看

之前講了好多關於C++的Class是什麼這是物件導向基本的重點。

怎麼用為什麼要用,趕快來練習一下吧~


之前了解了物件導向的規則,接下來要進入如何使用,順便學到如何做資料轉換。

這篇練習的是物件導向最基本的重點,variable要保持private,不然會不小心改到、容易混在一起數值也容易被更動到。
那放在private裡面要如何取用?做成method放在public區域。
這個題目就是在解釋常規下如何設定、取用class中的variables。

題目在這邊:HackerRank Class 直通車

int轉換成string

  1. 最上面加上#include <sstream>
  2. 先declare一個ss來裝東西,stringstream ss;
  3. 用<<和>>來操作往哪邊轉換,把age寫進ss裡面ss << age;
  4. 做一顆stringstring a;,把ss 輸入進 a,ss >> a;
  5. 這樣age就變成string了

可以把stringstream想像成中間的轉換器,int >> 轉換器,然後轉換器 >> string
同理也可以把string轉成int


我的code:

class Student{
private:
    int age, standard;
    string first_name, last_name;
public:
    void set_age(int age){
        this->age = age;
    }
    void set_standard(int standard){
        this-> standard = standard;
    }
    void set_first_name(string first_name){
        this-> first_name = first_name;
    }
    void set_last_name(string last_name){
        this->last_name = last_name;
    }
    
    int get_age(){
        return age;
    }
    string get_last_name(){
        return last_name;
    }
    string get_first_name(){
        return first_name;
    }
    int get_standard(){
        return standard;
    }
    string to_string(){
         stringstream ss;
         ss << age<<","<< first_name<<","<<last_name <<","<< standard;
         return ss.str();
;
    }
};

this -> 是什麼?

我們明天會聊開一篇專門來聊pointer和this,在這邊可以簡單想成如下:
還記得當我們declare variable時等同請電腦空出一個記憶體空間嗎?因為variable名字不能重複,不然電腦不知道我們指的是哪個記憶體空間,一堆箱子標籤都是相同的根本無法區分。
所以這裡的this就像是記號,告訴電腦“嘿!這個箱子是我指的那個箱子”。

或是直接放個不同的variabl name,也可以避免以上問題。(小缺點就是等程式變複雜了,之後要維護或修改可能會忘記到底指的是哪個variable)

Variable跟記憶體關係
就是跟電腦說“嘿,幫我在記憶體那邊空出一些空間,我要放東西,謝謝。”
例如打int age = 5;,等於跟電腦說,哈囉,幫我空出一個4 bytes的地方,這個空間叫age,裡面放5這個數字。
如果還不知道要放什麼,也可以打int age;,跟電腦說我還不知道放什麼,請幫我清出一個4 bytes空白叫做age的空間,等等再決定放什麼。
引用自Day 12 - C++ 物件導向1 - 類別Class,那個book b1是什麼? object又是什麼?

今天比較短,中場休息一下,除了物件導向的系列,接下來會以虛擬貨幣project做主軸慢慢把其他重要的東西介紹完。

Reference: geeksforgeeks, wikipedia, stackOverflow, 感謝HackerRank的題目


上一篇
Day 15 - C++ 物件導向4 - Method與Function
下一篇
Day17 C++ Reference & Pointer 指標
系列文
C++超級菜鳥也可以懂的物件導向攻略30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言