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

6 Sep 2015,
Share: 

จากบทความ 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

Flutter EP.2 ภาษา Dart

สวัสดีครับ หลังจาก EP.1 เราได้เรียนรู้การ Install และสร้าง Project กันไปแล้ว ในบทความนี้ก็เป็น EP.2 แล้วนะครับ จะเป็นเรื่องเกี่ยวกับ ภาษา Dart ซึ่งเป็นเนื้อหาที่จําเป็นในการพัฒนา Mobile application ด้วย Flutter

วิธีใช้ nano Command Text Editer

nano เป็นคําสั่งที่ใช้แก้ไข Text File คล้ายๆกับ notepad ใน Windows รูปแบบการใช้งานก็มีดังนี้nano [FILE]...[FILE]... คือ ชื่อของ Text file ที่ต้องการจะ แก้ไข(ถ้าไฟล์นั้นมีอยู่แล้ว จะเปิดไฟล์นั้นขึ้นมาแก้ไข แต่ถ้าไม่พบไฟล์ จะสร้างไฟล์ขึ้นมาใหม่)Imageคําสั่ง nano พื้นฐานบันทึกไฟล์ Cltr + Oการ Copy ข้อความทั้งบรรทัด Alt + ^การ Cut ข้อความทั้งบรรทัด Cltr + Kการ Paste บรรทัดที่ Copy มา Cltr + Uการค้นหาคำ Cltr + Wการค้นหาคำ Alt + Wการเลือกข้อความ Cltr + Shift + 6 แล้ว เลื่อน Cursor ไปซ้ายขวาจนได้เนื้อหาที่ต้อการการ Copy ข้อความที่เลือก Alt + Shift + 6การ Cut ข้อความที่เลือก Cltr + Kออกจากโปรแกรม Cltr + x

สร้างรายได้จากการ Search ด้วย Presearch

สวัสดีครับ โดยปกติเราก็ใช้งาน google ในการค้นหาข้อมูลที่เราอยากจะรู้ แต่จะดีกว่ามั้ยในการ Search ของเราแต่ละครั้งสามารถสร้างรายได้ให้เราได้ด้วย ในบทความนี้เรามีคําตอบครับว่าทําอย่างไรอันดับแรกเราไปเรียนรู้เกี่ยวกับ Presearch กันก่อนครับ


Copyright © 2019 - 2026 thiti.dev |  v1.61.0 |  Privacy policy | 

Build with ❤️ and Astro.

Github profile   Linkedin profile   Instagram   X profile   Nostr   Youtube channel   Telegram   Email contact   วงแหวนเว็บ