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";
}
ไม่มีความคิดเห็น:
แสดงความคิดเห็น