Struct

From Ta Wiki
Revision as of 00:19, 8 March 2019 by Tata (talk | contribs) (Created page with "== การทำ constructor แบบสั้น (เพิ่งไปเจอมาเจ๋งดีเลยเอามาลง ถึงจะสั้นกว่...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
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);