Type aliases (typedef)
ในภาษา C++ เราสามารถสร้างประเภทตัวแปรขึ้นมาเอง (aliases type) ได้ นั่นหมายความว่าชื่อของประเภทข้อมูลจะเป็นอะไรก็ได้ตามที่เราต้องการ มีสองวิธีในการที่จะสร้างประเภทตัวแปรที่กำหนดโดยผู้ใช้ โดยการใช้คำสั่งtypedef
และ using
แต่ในบทเรียนนี้เราจะใช้แค่ typedef และ typedef มีรูปแบบการใช้งานคือ:typedef data_type identify;
typedef
เป็นคำสั่งในการสร้าง data_type
เป็นประเภทข้อมูลเดิมที่มีอยู่ เช่น int, float เป็นต้น และ identify
เป็นชื่อของตัวแปรที่มีกฏการตั้งชื่อเหมือนกับตัวแปรมาดูตัวอย่าง
typedef int NUMBER; typedef int myType; typedef float mMoney; typedef char * pCh;ใน ตัวอย่าง เราได้ประกาศตัวแปรแบบประเภทของข้อมูล 4 ตัว เช่น NUMBER และ myType ซึ่งสืบทอดมาจากประเภทของตัวแปรที่มีอยู่ แล้วเราสามารถใช้ชื่อเหล่านี้ในตอนที่เราประกาศตัวแปรหรือทำสิ่งอื่นๆ
#include <iostream> #include <new> using namespace std; int main () { typedef int NUMBER; typedef float mMoney; NUMBER n, m; mMoney cost = 10.5; n = 2; m = 3; cout << n + m << endl; cout << cost << endl; NUMBER x = 100, y = 200; cout << x + y << endl; return 0; }ในตัวอย่าง เราได้ประกาศ
NUMBER
ซึ่งเป็นประเภทแบบ int
และ mMoney
กับ float
หลังจากนั้นเราสามารถใช้ตัวแปรชนิดข้อมูลนี้
เพื่อประกาศตัวแปรที่มีประเภทข้อมูลแบบ integer และ float ตามลำดับ
ข้อได้เปรียบของมันคือเราสามารถเปลี่ยนประเภทของ NUMBER
และเภทของข้อมูลที่ใช้ NUMBER จะถูกเปลี่ยนแปลงในครั้งเดียวEnumerated types (enum)
ประเภท ข้อมูลแบบเป็นประเภทข้อมูลที่ให้เราสามารถสร้างตัวแปร enum ได้ และค่าของมันสามารถเป็นข้อมูลประเภทไหนก็ได้ ที่ยังไม่มีอยู่ในภาษา C++ มันมีรูปแบบดังนี้:enum type_name { value1, value2, value3, ... } object_names;เราใช้คำสั่ง
enum
สำหรับการสร้างและตามด้วย type_name
ซึ่งเป็นชื่อของ enum ในวงเล็บ {}
ซึ่งสามารถเป็นตัวอักษรใดๆ ที่ไม่ใช้ประเภทข้อมูลที่มีอยู่ มาดูการสร้างตัวแปรแบบ enumenum day_m { sunday, monday, tuesday, wednesday, thursday, friday, saturday } day_m myDay; myDay = monday; if (myDay == monday) myDay = tuesday; else myDay = sunday;ในตัวอย่าง ตัวแปร enum
day_m
ใช้สร้างตัวแปร myDay
เพื่อที่จะให้เป็นประเภทข้อมูลของมันโดยคำสั่ง day_m myDay;
ดังนั้น ประเภทข้อมูลที่ถูกต้องของ myDay สามารถเป็นค่าใดก็ได้ใน day_m เช่น sunday, monday, thuesday และไปเรื่อยๆ...โดย ทั่วไป ค่าของข้อมูลใน enum ให้ถูกแปลงค่าให้เป็น integer โดยปริยาย โดยจะมีค่าเริ่มต้นจาก 0, 1, 2, ... ดังนั้น sunday นั้นเท่ากับ 0, monday เป็น 1, tuesday เป็น 2, และไปเรื่อย...
myDay = tuesday; if (myDay == 2) { cout << "myDay is Tuesday"; }
ไม่มีความคิดเห็น:
แสดงความคิดเห็น