C++ OOP การสร้าง Pointer Object ของ Class

6 Sep 2015

Share to:

จากบทความ C++ OOP การสร้าง Class และการใช้งาน Class ผมอธิบายถึงการสร้าง Object แบบ Stack แต่ในบทความนี้ผมจะอธิบายเรื่องการสร้าง Object โดยใช้ Pointer ข้อแตกต่างกันคือ การสร้าง Object แบบ Stack จะคล้ายๆกับเราสร้างตัวแปรขึ้นมาตัวนึงเมื่อใช้งานเสร็จหรือจบโปรแกรม ระบบจะคืน memory หรือทําลาย Object นั้นทิ้งให้โดยอัตโนมัติ แต่ถ้าสร้าง Object แบบ Pointer จะไม่ทําลาย Object ให้เราเมื่อจบโปรแกรม เราจะต้องเป็นคนทําลาย Object เอง ทําสั่งที่ใช้ ทําลาย Object คือ “delete” ตามด้วย Object ที่ต้องการลบ _ถ้าเราไม่ลบ Object ที่เราสร้างขึ้น ระบบจะไม่สามารถเข้าใช้งาน memory ในส่วนนั้นได้ ทําให้เกิด memory leak _

ตัวอย่างการสร้าง Pointer Object

ไฟล์ cal.h

#include <stdio.h>

class cal{
    public:
        int plus(int a, int b);
        int increase(int a);
    private:
        int increaseNum;
};

มีรายละเอียดดังนี้

  • ชื่อ Class: cal
  • method:
    • int plus(int a, int b);    <— Public
    • int increase(int a);    <— Public
  • field:
    • int increaseNum;    <—Private

เมื่อเราเขียน file header(*.h) เรียบร้อยเราก็จะมาเขียน ไฟล์เนื้อหา หรือการทํางานของ Class กันครับ โดยจะมีนามสกุล *.cpp ไฟล์ cal.cpp

#include <cal.h>

int cal::plus(int a, int b){
    return a+b;
}

int cal::increase(int a){
    increaseNum = 1;
    return(a+increaseNum);
}

เท่านี้เราก็จะได้ Class cal ตามที่ต้องการแล้วครับ ต่อมาเมื่อเราต้องการนํา Class นี้มาใช้งาน ในตัวอย่างนี้เราจะสร้าง main.cpp ขึ้นมาโดยมีเนื้อหาดังนี้ ไฟล์ main.cpp

#include <stdio.h>
#include <cal.h>

int main(void){
    cal *objCal;
    objCal = new cal();
    printf("Return from method plus: %d\n", objCal->plus(1,2));
    delete objCal;
    return(0);
}

การ compile จะต้อง compile cal.cpp และ main.cpp ให้เป็น Object(*.o) ไฟล์ก่อน แล้วจึงนํา object ไฟล์มา compile รวมกันเป็น Execute ไฟล์อีกที compile cal.cpp ได้ออกมาเป็นไฟล์ cal.o

g++ -I[path include] -c cal.cpp
  • [path include]คือ path ของ directory ที่เรา include เข้ามา ถ้าเรา include ไฟล์ cal.h เข้ามา โดยที่ไฟล์ cal.h อยู่ใน directory “/home/user/test/” ให้เราระบุเป็น “/home/user/test/“

compile main.cpp ได้ออกมาเป็นไฟล์ main.o

g++ -I[path include] -c main.cpp
  • [path include]คือ path ของ directory ที่เรา include เข้ามา ถ้าเรา include ไฟล์ cal.h เข้ามา โดยที่ไฟล์ cal.h อยู่ใน directory “/home/user/test/” ให้เราระบุเป็น “/home/user/test/“

compile ครั้งสุดท้ายเพื่อรวมทุกไฟล์ให้เป็น Execute ออกมาโดยใช้ชื่อ “mainexe”

g++ cal.o main.o -o mainexe

Download ตัวอย่าง

Suggestion blogs

รีเลย์ relay

รีเลย์คืออะไร?รีเลย์ เป็นอุปกรณ์อิเล็กทรอนิกส์ที่ทำหน้าที่เป็น switch ตัด-ต่อ วงจรโดยใช้แม่เหล็กไฟฟ้า การที่จะทำให้รีเลย์ทำงานจะต้องจ่ายไฟให้กับรีเลย์ตาม spec ที่ระบุไว้ เมื่อจ่ายไฟให้กับรีเลย์ หน้าสัมผัสภายในรีเลย์จะสัมผัสกันทำให้เป็นวงจรปิด แต่ถ้าหยุดจ่ายไฟ หน้าสัมผัสภายในรีเลย์จะแยกออกจากกันทำให้เป็นวงจรเปิด ตามรูป

lsof ตรวจสอบการเปิดไฟล์ต่างๆ ใน linux

ถ้าต้องการดูว่า โปรแกรมที่เราสนใจ เปิดใช้งานไฟล์ไหนบ้าง หรือเปิด socket อะไรบ้าง สามารถดูได้ด้วยคําสั่งนี้

ติดตั้ง Software หลายๆตัวบน mac ในครั้งดียว ด้วย Brew

สวัสดีครับ ปกติเวลาเราต้องการจะติดตั้ง Software บนเครื่อง Mac ก็สามารถทําได้หลายรูปแบบ เช่น โหลด file พวก _.dmg หรือ _.pkg สําหรับติดตั้งมากดติดตั้ง หนึ่งในหลายๆแบบในการติดตั้ง Software บน Mac ที่งายก็คือการใช้งาน Brew ครับ ซึ่ง Brew จะช่วยให้เราสามารถติดตั้ง Software บน Mac ได้ในคําสั่งเดียว โดยเราไม่ต้องไปโหลด File install ลงมาบนเครื่องให้ยุ่งยาก


Copyright © 2019 - 2024 thiti.dev |  v1.19.0 |  Privacy policy |  status | 

            วงแหวนเว็บ