ตัวแปรและพารามิเตอร์ const
ป้องกันข้อมูลจากการเปลี่ยนแปลง
ตัวแปรและพารามิเตอร์ const เป็นบทเรียน C++ Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน C++ Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส C++ Academy มีบทเรียนทั้งหมด 4 บทเรียน
การประกาศตัวแปรแบบไม่เปลี่ยนค่า
ตัวแปร const ไม่สามารถแก้ไขได้หลังจากเริ่มต้นค่าแล้ว คอมไพเลอร์จะบังคับใช้กฎนี้และตรวจจับการเขียนค่าโดยไม่ได้ตั้งใจ
#include <iostream>
int main() {
const int maxUsers = 100;
// maxUsers = 200; // ERROR
std::cout << maxUsers << "\n";
}พารามิเตอร์ฟังก์ชันแบบไม่เปลี่ยนค่า
การกำหนดพารามิเตอร์แบบส่งด้วยค่าให้เป็น const จะป้องกันไม่ให้ส่วนตัวฟังก์ชันแก้ไขสำเนาเฉพาะที่ของพารามิเตอร์ ซึ่งช่วยทั้งในการอธิบายเจตนาและเพิ่มความปลอดภัย
#include <iostream>
int doubled(const int n) {
// n = 0; // ERROR
return n * 2;
}
int main() { std::cout << doubled(21) << "\n"; }พารามิเตอร์อ้างอิงแบบไม่เปลี่ยนค่า
การส่งค่าด้วย const& ช่วยหลีกเลี่ยงการคัดลอกออบเจ็กต์ขนาดใหญ่ พร้อมรับประกันว่าจะไม่แก้ไขออบเจ็กต์นั้น วิธีนี้เป็นแนวทางมาตรฐานสำหรับส่งสตริงและโครงสร้างเก็บข้อมูล
#include <iostream>
#include <string>
void printLen(const std::string& s) { // no copy, no change
std::cout << s.size() << "\n";
}
int main() { printLen("hello"); }ตัวชี้ไปยังค่าที่เปลี่ยนไม่ได้
const T* หมายความว่าคุณไม่สามารถเปลี่ยนค่าที่ตัวชี้ชี้ไปผ่านตัวชี้นี้ได้ แต่ยังสามารถเปลี่ยนให้ตัวชี้ไปชี้ตำแหน่งอื่นได้
#include <iostream>
int main() {
int a = 1, b = 2;
const int* p = &a;
// *p = 5; // ERROR: value is const
p = &b; // OK: pointer can move
std::cout << *p << "\n";
}ตัวชี้ที่เปลี่ยนตำแหน่งไม่ได้
T* const คือตัวชี้คงที่ คุณไม่สามารถเปลี่ยนให้ตัวชี้ไปชี้ตำแหน่งอื่นได้ แต่ยังแก้ไขค่าที่ตัวชี้ชี้ไปได้
#include <iostream>
int main() {
int a = 1;
int* const p = &a;
*p = 9; // OK: value changeable
// p = nullptr; // ERROR: pointer is const
std::cout << *p << "\n";
}การอ่านการประกาศจากขวาไปซ้าย
ให้อ่านการประกาศค่าคงที่จากขวาไปซ้าย: const int* const คือ "ตัวชี้คงที่ไปยัง int คงที่" ซึ่งหมายความว่าทั้งค่าและตัวชี้ไม่สามารถเปลี่ยนแปลงได้
เหตุใดการใช้ค่าคงที่อย่างถูกต้องจึงสำคัญ
การใช้ const ในทุกจุดที่เหมาะสมช่วยบันทึกเจตนา ป้องกันข้อผิดพลาด และเปิดโอกาสให้คอมไพเลอร์ปรับปรุงประสิทธิภาพได้ แนวปฏิบัตินี้เรียกว่า การใช้ค่าคงที่อย่างถูกต้อง
ค่าคงที่ช่วยให้ฟังก์ชันรองรับผู้เรียกได้มากขึ้น
ฟังก์ชันที่รับ const& สามารถรับได้ทั้งอาร์กิวเมนต์แบบคงที่และไม่คงที่ รวมถึงค่าชั่วคราว ส่วนการอ้างอิงแบบไม่คงที่ไม่สามารถผูกกับค่าชั่วคราวได้
ตัวแปรเฉพาะที่แบบคงที่ช่วยให้เข้าใจโค้ด
การประกาศตัวแปรเฉพาะที่เป็น const เมื่อไม่ควรมีการเปลี่ยนค่า จะทำให้โค้ดอ่านง่ายขึ้นและป้องกันการกำหนดค่าใหม่โดยไม่ได้ตั้งใจ
#include <iostream>
int main() {
const double rate = 0.2;
const double total = 100 * (1 + rate);
std::cout << total << "\n";
}ค่าคงที่ระดับบนสุดของค่า
สำหรับพารามิเตอร์ที่ส่งด้วยค่า const ระดับบนสุดจะไม่ส่งผลต่อผู้เรียก แต่จะจำกัดการทำงานภายในฟังก์ชันเท่านั้น และมักละเว้นไว้ในการประกาศ
เพิ่มค่าคงที่ตั้งแต่เริ่มต้น
การเริ่มต้นด้วยการใช้ค่าคงที่อย่างถูกต้องทำได้ง่ายกว่าการปรับปรุงโค้ดภายหลังมาก ให้ใช้ const กับพารามิเตอร์ การอ้างอิง และตัวแปรเฉพาะที่เป็นนิสัยพื้นฐาน
ตรวจสอบความเข้าใจอย่างรวดเร็ว
ทดสอบความเข้าใจเกี่ยวกับ const ของคุณ
สรุปทบทวน
คุณได้เรียนรู้การใช้ const กับตัวแปร พารามิเตอร์ การอ้างอิง และตัวชี้ รวมถึงความแตกต่างระหว่าง ตัวชี้ไปยังค่าที่เปลี่ยนไม่ได้ กับ ตัวชี้ที่เปลี่ยนตำแหน่งไม่ได้ การใช้ค่าคงที่อย่างถูกต้องช่วยบันทึกเจตนา ป้องกันข้อผิดพลาด และทำให้สามารถผูกกับค่าชั่วคราวพร้อมเปิดใช้การปรับปรุงประสิทธิภาพได้
คำถามที่พบบ่อย
บทเรียน “ตัวแปรและพารามิเตอร์ const” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ตัวแปรและพารามิเตอร์ const” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส C++ Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส C++ Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ตัวแปรและพารามิเตอร์ const”
ป้องกันข้อมูลจากการเปลี่ยนแปลง คุณปฏิบัติ C++ Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C++ Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน C++ Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “ตัวแปรและพารามิเตอร์ const” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน C++ Academy นี้ได้ไหม
ได้ บทเรียน C++ Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ตัวแปรและพารามิเตอร์ const
- ฟังก์ชันสมาชิก const
- constexpr และเวลาคอมไพล์
- consteval และ constinit