C ++中的访问修饰符

访问修饰符用于在面向对象的编程中实现数据隐藏。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();