Struct
Jump to navigation
Jump to search
การทำ constructor แบบสั้น (เพิ่งไปเจอมาเจ๋งดีเลยเอามาลง ถึงจะสั้นกว่าไม่เท่าไหร่ก็เหอะ 555+)
- ส่วนที่ทำตัวหนา คือ ส่วนของการประกาศ constructor
struct DOC{
int docid;
double rank;
DOC( int i, double r ) : docid(i), rank(r) {}
};
credit : http://stackoverflow.com/questions/2574060/c-min-heap-with-user-defined-type
การประกาศ Constructor แบบปกติ
- เมื่อเรามี struct มาแล้วใน struct นั้นมีตัวแปรอยู่หลายตัว เช่น
struct ST{
int id;
double value;
};
- เมื่อเราประกาศตัวแปร struct ชื่อ a ขึ้นมา แล้วต้องการกำหนดค่าตัวแปร id=1 value=3.5 เราต้องพิมพ์
int main()
{
ST a;
a.id = 1;
a.value = 3.5;
}
- แต่เราสามารถกำหนด constructor ขึ้นมาเพื่อง่ายต่อการกำหนดได้ เช่น
struct ST{
int id;
double value;
ST(int xxx, double yyy)
{
id = xxx;
value = yyy;
}
};
- แต่ถ้าเขียนแบบด้านบนจะไม่สามารถประกาศตัวแปร struct โล่งๆแค่นี้ได้
ST a;
- แต่ต้องเขียนแบบนี้ (กำหนดให้ a.id=1 และ a.value = 3.5)
ST a(1,3.5);
- หรือ แบบนี้ (กำหนดให้ a.id=1 และ a.value = 3.5)
ST a=ST(1,3.5);
- ซึ่งมีวิธีแก้คือแก้เป็นแบบนี้ (แล้วเมื่อไม่ได้ใส่ parameter ใดเข้าไปจะมีค่าตามที่เรากำหนดไว้ ซึ่งจากในโค้ดตัวอย่างคือกำหนดให้เป็น 0 กับ 0.0)
struct ST{
int id;
double value;
ST(int xxx=0, double yyy=0.0)
{
id = xxx;
value = yyy;
}
};
- เช่นถ้าประกาศอย่างนี้ x.id=0 และ x.value=0.0
ST a;
- เช่นถ้าประกาศอย่างนี้ x.id=1 และ x.value=0.0
ST a(1);
- เช่นถ้าประกาศอย่างนี้ x.id=1 และ x.value=3.5
ST a(1,3.5);