และเพื่อให้เข้าใจเรื่อง class มากขึ้น
class ที่ผมจะมาแนะนำให้รู้จักคือ string
class string ใน C++ ไม่เหมือนกับ string ใน ภาษา C
ในภาษา C ตัวแปร string คือแถวลำดับของ char
แต่ string ใน C++ จะจัดการกับหน่วยความจำให้กับเราเอง เราไม่ต้องไปยุ่งกับมัน
ก่อนอื่นเลย เราจะต้อง include ไฟล์ที่จำเป็นเข้ามาก่อน คือ
#include <string>
string อยู่ใน namespace std เวลาจะประกาศ object เราจะต้องข้ึนต้นด้วย std
std::string s;
หรือจะประกาศ using namespace std; ไว้เลยก็ได้
using namespace std;
string s;
ลองมาดูฟังก์ชันที่ใช้บ่อยใน string กัน
string::size()
string::length()
ทั้งสองฟังก์ชันนี้จะ return ค่าความยาวของข้อความออกมา
เช่น
s = "Test String";
cout << s.length() << endl;
จะได้ผลลัพท์คือ 11
string::max_size()
จะ return ค่าความยาวของข้อความทั้งหมดที่ string จะสามารถเก็บได้
string::resize(size_t n)
string::resize(size_t n, char c)
จะเป็นการเปลี่ยนขนาดของ string และถ้าเป็นการเพิ่มขนาด จะเอา c ไปต่อท้าย
แต่ถ้าไม่ได้ใส่ค่า c ค่า default คือ '\0'
s = "Test String";
s.resize(7); // s = "Test St"
s.resize(9, '_'); // s = "Test St__"
s.resize(12); // s = "Test St__"
string::clear()
เป็นการลบค่าใน string ออก
string::empty()
เป็นการตรวจสอบว่า string มีข้อมูลหรือไม่
string::at(size_t pos)
string::operator[]
คือ char ตัวที่ pos ของ string เช่น s[2]
string::operator+=
เป็นการต่อ string เช่น
s = "String1";
s += " String2";
// s = "String1 String2";
มีความหมายเหมือนกับ
s = s + " String2";
เป็นยังไงกันบ้างครับ string ใช้ง่ายใช่ไหมหล่ะ
เรามาต่อเรื่อง class กันดีกว่า
คราวนี้ผมจะพูดเรื่องการนำฟังก์ชันใน class ออกมาเขียนข้างนอก
จำได้ไหมครับ ว่า class เขียนยังไง ?
คราวนี้ผมจะเขียนแต่ prototype ของฟังก์ชัน
class triangle {
private:
float b, h;
public:
void setBase(float);
void setHight(float);
float getArea();
};
ผมจะนิยามฟังก์ชันข้างนอก ต้องใช้ เครื่องหมาย scope (::) ขั่นระหว่างชื่อ class กับชื่อฟังก์ชัน
void triangle::setBase(float base)
{
b = base;
}
void triangle::setHight(float hight)
{
h = hight;
}
float triangle::getArea()
{
return 0.5 * b * h;
}
ทำไมถึงต้องทำแบบนี้ ?
เพราะว่าถ้าในฟังก์ชันมีคำสั่งเยอะมาก จะทำให้เรามองภาพรวมของ class ยาก
ถ้าใน class มีแต่ prototype และตัวแปร เราจะมองเห็นภาพรวมง่ายขึ้น
หวังว่าบทความนี้จะมีประโยชน์สำหรับใครหลาย ๆ คน นะครับ