访问修饰符用于在面向对象的编程中实现数据隐藏。C ++中使用三种类型的访问修饰符。这些是公共的,私人的和受保护的。有关这些的详细信息如下。
声明为公共的类中的数据成员和成员函数对所有人(包括其他类)都可用。使用点运算符和类对象可以从程序中的任何位置访问它们。
给出了一个演示公共访问说明符的程序,如下所示。
#include<iostream> using namespace std; class Add { public: int a, b; void sum() { cout<<"Sum of "<< a <<" and "<< b <<" is "<<a+b; } }; int main() { Add obj; obj.a = 2; obj.b = 5; obj.sum(); return 0; }
输出结果
Sum of 2 and 5 is 7
在上面的程序中,Add类具有两个公共数据成员a和b。该函数sum()
显示a和b的总和。如下所示。
class Add { public: int a, b; void sum() { cout<<"Sum of "<< a <<" and "<< b <<" is "<<a+b; } };
在函数中main()
,创建了Add类的对象。然后在中初始化a和b main()
。因为它们是公共数据类型,所以可以这样做。最后sum()
被调用,显示a和b的总和。如下所示。
Add obj; obj.a = 2; obj.b = 5; obj.sum();
被声明为私有的数据成员只能从该类内部的函数访问,而不能从该类外部的任何函数访问。Friend函数还可以访问类的私有数据成员。
演示私有访问修饰符的程序如下所示。
#include<iostream> using namespace std; class Add { private: int a, b; public: void setdata(int x, int y) { a = x; b = y; } void sum() { cout<<"Sum of "<< a <<" and "<< b <<" is "<<a+b; } }; int main() { Add obj; obj.setdata(9,5); obj.sum(); return 0; }
输出结果
Sum of 9 and 5 is 14
在上面的程序中,Add类具有两个私有数据成员a和b。该函数setdata()
提供a和b的值,因为它们是私有变量。该函数sum()
显示a和b的总和。如下所示。
class Add { private: int a, b; public: void setdata(int x, int y) { a = x; b = y; } void sum() { cout<<"Sum of "<< a <<" and "<< b <<" is "<<a+b; } };
在函数中main()
,创建了Add类的对象。然后setdata()
调用该函数以初始化a和b,因为它们是私有变量。最后sum()
被调用,显示a和b的总和。如下所示。
Add obj; obj.setdata(9,5); obj.sum();
声明为保护的类的数据成员与声明为私有的那些数据成员相似。它们不能在类外部直接访问,但是可以由基类的派生类访问。
演示C ++中受保护的访问修饰符的程序如下-
#include<iostream> using namespace std; class Parent { protected: int a, b; }; class Child: public Parent { public: void getdata(int x, int y) { a=x; b=y; } void putdata() { cout<<"a = "<<a<<endl; cout<<"b = "<<b<<endl; } }; int main() { Child obj; obj.getdata(9,1); obj.putdata(); return 0; }
输出结果
a = 9 b = 1
在上面的程序中,父类具有两个受保护的变量a和b。如下所示。
class Parent { protected: int a, b; };
Child类具有两个函数getdata()
,putdata()
它们采用a和b的值并分别显示它们。这些函数可以做到这一点,因为a和b是受保护的变量,而Child是Parent的派生类。下面的代码片段如下-
class Child: public Parent { public: void getdata(int x, int y) { a = x; b = y; } void putdata() { cout<<"a = "<<a<<endl; cout<<"b = "<<b<<endl; } };
在该函数中main()
,创建Child类的对象obj。然后调用函数getdata()
和putdata()
。如下所示。
Child obj; obj.getdata(9,1); obj.putdata();