วิธีควบคุมตัวแก้ไขการเข้าถึงใน C ++: ทำความเข้าใจการมองเห็นของสมาชิก

Withi Khwbkhum Taw Kaekhi Kar Khea Thung Ni C Thakhwam Kheaci Kar Mxng Hen Khxng Smachik



การซ่อนข้อมูลเป็นหนึ่งในคุณสมบัติหลักของ C++ ซึ่งหมายถึงการจำกัดการเข้าถึงข้อมูลในคลาสเพื่อป้องกันการเข้าถึงข้อมูลของคลาสจากภายนอกโดยไม่พึงประสงค์ ดังนั้น ตัวดัดแปลงการเข้าถึงจึงถูกใช้เพื่อกำหนดว่าสมาชิกคลาสใดที่สามารถเข้าถึงได้จากแหล่งภายนอกใดและที่ไม่สามารถเข้าถึงได้

ตัวแก้ไขการเข้าถึงใน C ++

ตัวแก้ไขการเข้าถึงใช้เพื่อจัดการการเข้าถึงและการเปิดเผยข้อมูลของชั้นเรียน พวกเขากำหนดข้อจำกัดบางประการให้กับสมาชิกข้อมูลเพื่อไม่ให้ฟังก์ชันภายนอกเข้าถึงได้ ตัวแก้ไขการเข้าถึงมีสามประเภทในภาษา C++:

ตัวแก้ไขการเข้าถึงสาธารณะใน C ++

สมาชิกทั้งหมดของคลาสที่ประกาศภายใต้คีย์เวิร์ด public จะพร้อมใช้งานสำหรับฟังก์ชันทั้งหมดนอกคลาสภายในโปรแกรม ตัวดำเนินการเข้าถึงสมาชิกโดยตรง (.) หรือที่เรียกว่าตัวดำเนินการจุด สามารถใช้กับอ็อบเจ็กต์ของคลาสเฉพาะนั้นเพื่อเข้าถึงสมาชิกข้อมูลเหล่านี้







ตัวอย่าง

ตัวแก้ไขการเข้าถึงสาธารณะใช้เพื่อประกาศคลาส และสมาชิกข้อมูลจะถูกเข้าถึงโดยฟังก์ชันอื่น ๆ ภายในโปรแกรม



#รวม

#รวม

#รวม<คณิตศาสตร์.h>

ใช้เนมสเปซมาตรฐาน ;
คลาสสามเหลี่ยม
{
สาธารณะ : :
ลอย x , และ , กับ ;
เป็นโมฆะ ป้อนข้อมูล ( )
{
ศาล << 'ป้อนด้าน x ของสามเหลี่ยม:-' ;
การกิน >> x ;
ศาล << 'ป้อนด้าน y ของสามเหลี่ยม:-' ;
การกิน >> และ ;
ศาล << 'ป้อนด้าน z ของรูปสามเหลี่ยม:-' ;
การกิน >> กับ ;
}
เป็นโมฆะ พื้นที่ ( )
{
ลอย = ( x + และ + กับ ) / 2 ;
ลอย พื้นที่ = ตารางวา ( * ( - - x ) * ( - - และ ) * ( - - กับ ) ) ;
ศาล << ' \n พื้นที่สามเหลี่ยม =' << พื้นที่ ;
}
} ;
ภายใน หลัก ( )
{
สามเหลี่ยม t1 ;
ที1. ป้อนข้อมูล ( ) ;
ที1. พื้นที่ ( ) ;
กลับ 0 ;
}

สามเหลี่ยมถูกกำหนดให้เป็นคลาสและพารามิเตอร์อยู่ภายใต้คำสำคัญสาธารณะ จากนั้นพื้นที่ของรูปสามเหลี่ยมจะถูกคำนวณนอกคลาสนี้โดยการเข้าถึงสมาชิกข้อมูลของตัวแก้ไขสาธารณะ







ผู้ใช้ป้อนข้อมูลด้านทั้งสามของรูปสามเหลี่ยม และพื้นที่ของรูปสามเหลี่ยมคำนวณโดยการเข้าถึงค่าภายนอกคลาส โดยใช้สูตรมาตรฐานซึ่งก็คือ 13.4164

ตัวแก้ไขการเข้าถึงส่วนตัวใน C ++

สมาชิกทั้งหมดของคลาสที่ประกาศภายใต้คีย์เวิร์ด private จะไม่สามารถใช้งานได้กับฟังก์ชันใดๆ นอกคลาสในโปรแกรม สมาชิกส่วนตัวเหล่านี้สามารถอ่านได้โดยสมาชิกโดยตรงภายในคลาสเดียวกันเท่านั้น อย่างไรก็ตามฟังก์ชันและคลาสของเพื่อนก็สามารถเข้าถึงข้อมูลได้เช่นกัน



ตัวอย่าง

มีการประกาศคลาสทั้งสองแบบสาธารณะและส่วนตัว และค่าที่ส่งคืนของโปรแกรมจะเป็นพื้นที่ของรูปสามเหลี่ยม

#รวม

#รวม

#รวม<คณิตศาสตร์.h>

ใช้เนมสเปซมาตรฐาน ;
คลาสสามเหลี่ยม
{

ส่วนตัว : :
ลอย x , และ , กับ ;
สาธารณะ : :
เป็นโมฆะ ป้อนข้อมูล ( )

{

ศาล << 'ป้อนด้าน x ของสามเหลี่ยม:-' ;
การกิน >> x ;
ศาล << 'ป้อนด้าน y ของสามเหลี่ยม:-' ;
การกิน >> และ ;
ศาล << 'ป้อนด้าน z ของรูปสามเหลี่ยม:-' ;
การกิน >> กับ ;

}
เป็นโมฆะ พื้นที่ ( )
{

ลอย = ( x + และ + กับ ) / 2 ;
ลอย พื้นที่ = ตารางวา ( * ( - - x ) * ( - - และ ) * ( - - กับ ) ) ;
ศาล << ' \n พื้นที่สามเหลี่ยม =' << พื้นที่ ;

}

} ;

ภายใน หลัก ( )
{
สามเหลี่ยม t1 ;
ที1. ป้อนข้อมูล ( ) ;
ที1. พื้นที่ ( ) ;
กลับ 0 ;

}

ใน main() วัตถุ t1 ไม่สามารถเข้าถึงตัวแปรคลาสส่วนตัว float x, y และ z ได้โดยตรง ดังนั้นจึงสามารถจัดการทางอ้อมผ่านฟังก์ชันสาธารณะ input() เท่านั้น เนื่องจากฟังก์ชันนี้รับค่า x, y และ z

พื้นที่ของรูปสามเหลี่ยมได้มาจากการเข้าถึงคลาสส่วนตัวผ่านการจัดการโดยใช้คลาสสาธารณะ หากค่าของ x, y และ z จะไม่ถูกประกาศในคลาสสาธารณะ ค่าเหล่านั้นจะไม่สามารถเข้าถึงได้ใน main() เพื่อการคำนวณ

ตัวแก้ไขการเข้าถึงที่ได้รับการป้องกันใน C ++

สมาชิกและฟังก์ชันภายใต้คีย์เวิร์ดที่มีการป้องกันนั้นสามารถเข้าถึงได้ภายในคลาสและคลาสที่ได้รับเท่านั้น ชั้นเรียนที่เหลือไม่สามารถเข้าถึงข้อมูลของตนได้ พวกเขาได้รับการคุ้มครองอย่างสูง

ตัวอย่าง

ข้อมูลที่ได้รับการป้องกันภายใต้คำสำคัญที่ได้รับการป้องกันสามารถอ่านได้ภายในคลาสและโดยคลาสซึ่งเป็นคลาสที่ได้รับเท่านั้น ตัวอย่างนี้เป็นการสาธิตการใช้งานจริงของตัวแก้ไขการเข้าถึงที่ได้รับการป้องกัน

#รวม

#รวม

#รวม<คณิตศาสตร์.h>

ใช้เนมสเปซมาตรฐาน ;
//ชั้นผู้ปกครอง
คลาสสามเหลี่ยม
{

มีการป้องกัน : :
ลอย x , และ , กับ ;
} ;
//ชั้นเด็ก
คลาส TriangleChild : : สามเหลี่ยมสาธารณะ {
สาธารณะ : :
เป็นโมฆะ ป้อนข้อมูล ( )

{

ศาล << 'ป้อนด้าน x ของสามเหลี่ยม:-' ;
การกิน >> x ;
ศาล << 'ป้อนด้าน y ของสามเหลี่ยม:-' ;
การกิน >> และ ;
ศาล << 'ป้อนด้าน z ของรูปสามเหลี่ยม:-' ;
การกิน >> กับ ;

}
เป็นโมฆะ พื้นที่ ( )
{
ลอย = ( x + และ + กับ ) / 2 ;
ลอย พื้นที่ = ตารางวา ( * ( - - x ) * ( - - และ ) * ( - - กับ ) ) ;
ศาล << ' \n พื้นที่สามเหลี่ยม =' << พื้นที่ ;

}
} ;

ภายใน หลัก ( )

{
เด็กสามเหลี่ยม เด็ก ;
เด็ก. ป้อนข้อมูล ( ) ;
เด็ก. พื้นที่ ( ) ;
กลับ 0 ;

}

TriangleChild เป็นคลาสที่สืบทอดมาจากคลาส Triangle ตัวแปร x, y และ z ได้รับการประกาศเป็นรูปสามเหลี่ยมพร้อมกับคำสำคัญที่ได้รับการป้องกัน ซึ่งหมายความว่าตัวแปรเหล่านี้ได้รับการป้องกัน แต่ TriangleChild สามารถเข้าถึงได้เนื่องจาก Triangle เป็นคลาสพาเรนต์ ค่าของตัวแปรถูกกำหนดไว้ใน TriangleChild แม้ว่าจะถูกประกาศในคลาส Triangle ก็ตาม

ตัวแปรสามารถเข้าถึงได้ผ่านคลาสย่อย จากนั้นจึงคำนวณพื้นที่ของรูปสามเหลี่ยม

บทสรุป

การซ่อนข้อมูลช่วยป้องกันการเข้าถึงข้อมูลของคลาสจากภายนอกโดยไม่พึงประสงค์ ตัวแก้ไขการเข้าถึงใช้เพื่อจัดการการเข้าถึงและการเปิดเผยข้อมูลในโปรแกรม ตัวแก้ไขการเข้าถึงแบบส่วนตัว ที่ได้รับการป้องกัน และแบบสาธารณะใช้เพื่อซ่อนข้อมูล ข้อมูลภายใต้คำสำคัญสาธารณะสามารถอ่านได้โดยฟังก์ชันจากภายนอกชั้นเรียนเช่นกัน ข้อมูลที่ประกาศเป็นส่วนตัวสามารถอ่านได้เฉพาะภายในคลาสเท่านั้น ในขณะที่คลาสหลักและคลาสรองสามารถเข้าถึงข้อมูลที่ได้รับการป้องกันได้เช่นกัน