การ Access Modifiers ในภาษา C ไม่มี ขอเปรียบเทียบในภาษา C++ค่ะ
Access Modifiers ใน C++ คือการเอาส่วนที่สำคัญของการเขียนโปรแกรมเชิงวัตถุที่เรียกว่า data hiding โดยการเข้าถึงจะกำหนดข้อจำกัดบางอย่างให้กับสมาชิกคลาสเพื่อไม่ให้ฟังก์ชันภายนอกเข้าถึงได้โดยตรง ตัวปรับแต่งการเข้าถึงมี 3 ประเภท คือ
1.Public: สมาชิกคลาสทั้งหมดที่ประกาศภายใต้ตัวระบุ public จะพร้อมให้ทุกคนเข้าถึงได้ สมาชิกข้อมูลและฟังก์ชันสมาชิกที่ประกาศเป็น public สามารถเข้าถึงได้โดยคลาสและฟังก์ชันอื่นๆ สามารถเข้าถึงได้จากทุกที่ในโปรแกรมโดยใช้ตัวดำเนินการเข้าถึง
// C++ program to demonstrate public// access modifier#include<iostream>usingnamespacestd;// class definitionclassCircle{public:double radius;doublecompute_area(){return3.14*radius*radius;}};// main functionintmain(){ Circle obj;// accessing public datamember outside classobj.radius=5.5; cout <<"Radius is: "<<obj.radius<<"\n"; cout <<"Area is: "<<obj.compute_area();return0;}output :Radius is: 5.5Area is: 94.985
// C++ program to demonstrate private
// access modifier
#include<iostream>
using namespace std;
class Circle
{
// private data member
private:
double radius;
// public member function
public:
double compute_area()
{ // member function can access private
// data member radius
return 3.14*radius*radius;
}
};
// main function
int main()
{
// creating object of the class
Circle obj;
// trying to access private data member
// directly outside the class
obj.radius = 1.5;
cout << "Area is:" << obj.compute_area();
return 0;
}
output: In function 'int main()':
11:16: error: 'double Circle::radius' is private
double radius;
^
31:9: error: within this context
obj.radius = 1.5;
// C++ program to demonstrate private
// access modifier
#include<iostream>
using namespace std;
class Circle
{
// private data member
private:
double radius;
// public member function
public:
void compute_area(double r)
{ // member function can access private
// data member radius
radius = r;
double area = 3.14*radius*radius;
cout << "Radius is: " << radius << endl;
cout << "Area is: " << area;
}
};
// main function
int main()
{
// creating object of the class
Circle obj;
// trying to access private data member
// directly outside the class
obj.compute_area(1.5);
return 0;
}
output : Radius is: 1.5
Area is: 7.065
#include <bits/stdc++.h>
using namespace std;
// base class
class Parent
{
// protected data members
protected:
int id_protected;
};
// sub class or derived class from public base class
class Child : public Parent
{
public:
void setId(int id)
{
// Child class is able to access the inherited
// protected data members of base class
id_protected = id;
}
void displayId()
{
cout << "id_protected is: " << id_protected << endl;
}
};
// main function
int main() {
Child obj1;
// member function of the derived class can
// access the protected data members of the base class
obj1.setId(81);
obj1.displayId();
return 0;
}
output :id_protected is: 81