4. Constructor
Constructor เป็นฟังก์ชันพิเศษภายในคลาส ซึ่งแตกต่างจากฟังก์ชันอื่น 2 ประการ- ชื่อเหมือนคลาสนั้นๆ
- ในขณะที่สร้าง object เสร็จสมบุรณ์พร้อมใช้งาน constructor จะถูกเรียกใช้งานอัตโนมัติเป็นลำดับแรกทันที โดยเราไม่จำเป็นต้องสั่งให้ทำงานแต่อย่างใด
Ex4 Constructor
#include <iostream>
using namespace std;
class Person {
public:
/****** Constructor ******/
Person() {
cout << "Person alive" << endl;
}
/****** Setter and Getter ******/
void setPID (string PID) {
_PID = PID;
}
string getPID () {
return _PID;
}
void setFullname (string Fullname) {
_Fullname = Fullname;
}
string getFullname () {
return _Fullname;
}
void setAddress (string Address) {
_Address = Address;
}
string getAddress () {
return _Address;
}
/****** Methods ******/
void Speak(){
cout << "Person speak" << endl;
}
void Walk(){
cout << "Person walk" << endl;
}
private:
string _PID;
string _Fullname;
string _Address;
};
int main(int argc, char** argv)
{
Person p;
p.Speak();
p.Walk();
system("pause");
return 0;
}
Result :
Person alive
Person speak
Person walk
5. Constructor แบบมี parameter
constructor สามารถมีพารามิเตอร์ได้ แต่ละ object ที่สร้างขึ้นมา ต่างคนต่างเก็บข้อมูลและทำงานเป็นของตัวเอง เรียกว่า แต่ละ instanceEx5 Constructor with Parameter
#include <iostream>
using namespace std;
class Person {
public:
/****** Constructor with Parameter ******/
Person(string Gender) {
_Gender = Gender;
}
/****** Setter and Getter ******/
void setPID (string PID) {
_PID = PID;
}
string getPID () {
return _PID;
}
void setFullname (string Fullname) {
_Fullname = Fullname;
}
string getFullname () {
return _Fullname;
}
void setAddress (string Address) {
_Address = Address;
}
string getAddress () {
return _Address;
}
void setGender (string Gender) {
_Gender = Gender;
}
string getGender () {
return _Gender;
}
/****** Methods ******/
void Speak(){
cout << "Person speak" << endl;
}
void Walk(){
cout << "Person walk" << endl;
}
private:
string _PID;
string _Fullname;
string _Address;
string _Gender;
};
int main(int argc, char** argv)
{
Person p1("Female");
cout << "P1 is " << p1.getGender() << endl;
Person p2("Male");
cout << "P2 is " << p2.getGender() << endl;
system("pause");
return 0;
}
Result :
P1 is Female
P2 is Male
6. Destructor
Constructor เป็นฟังก์ชันพิเศษภายในคลาส มีชื่อเหมือนคลาสตัวเอง แต่จะมีเครื่องหมาย ~ กำกับ ถูกสั่งให้ทำงานอัตโนมัติเมื่อสิ้นสุดความเป็น objectEx5 Constructor with Parameter
#include <iostream>
using namespace std;
class Person {
public:
/****** Constructor ******/
Person() {
cout << "Person alive" << endl;
}
/****** Destructor ******/
~Person() {
cout << "Person dead" << endl;
}
};
int main(int argc, char** argv)
{
Person p;
system("pause");
return 0;
}
Result :
Person alive
ตัวแปร p ถือเป็นตัวแปรขอบเขตแบบ local ถูกประกาศและสามารถใช้งานภายในฟังก์ชัน main เท่านั้น ดังนั้น ตัวแปร p จะสิ้นสุดความเป็น object เมื่อ main() จบการทำงาน เมื่อกดปุ่มอะไรก็ได้บนคีย์บอร์ดเพื่อปิดโปรแกรม จะแสดงข้อความ Person dead ขึ้นมา
Person alive
Press any key to continue . . .
Person dead
Sign up here with your email
ConversionConversion EmoticonEmoticon