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);