C ++中Private和Protected之间的区别

在C ++类对象的概念中,有三种访问修饰符:1)private,2)protected和3)public。根据其属性使用它们。在这里,我们将了解什么是私有成员和受保护成员,它们之间有什么区别?

1)私有成员 - private

私有成员在类中用关键字private声明,后跟冒号(:)字符,并且只能在声明了类的类中访问它们。类外部无法访问私人成员。

私有成员可以是数据成员(变量)和成员函数(函数),并且两者都可以在同一类中访问,它们可以在同一类的私有/公共成员函数中使用。

看下面的示例,它包含两个私有成员的名称和城市,并在公共成员函数getPerson()dispPerson()中使用它们。

//私人会员的例子

#include <iostream>
using namespace std;

class person {
    //私有成员
private:
    string name;
    int age;

    //公共成员
public:
    void getPerson()
    {
        cout << "Enter name: ";
        cin >> name;
        cout << "Enter age: ";
        cin >> age;
    }
    void dispPerson()
    {
        cout << "Name: " << name << endl;
        cout << "Age: " << age << endl;
    }
};

//主要函数
int main(){
    //创建对象
    person per;
    per.getPerson();
    per.dispPerson();

    return 0;
}

输出结果

Enter name: Shivang
Enter age: 21
Name: Shivang
Age: 21

2)受保护的成员 -protected

受保护的成员在类中使用关键字protected声明,后跟冒号(:)字符,并且可以在声明它们的类中访问它们,也可以在派生类或子类中访问它们。受保护的成员用于继承的概念。就像私有成员一样,不能在类之外(在派生类中除外)访问受保护的成员。

受保护的成员可以是数据成员(变量)和成员函数(函数),并且两者都可以在同一类以及派生类,子类或子类中访问。

考虑下面的示例,有两个类:person(是基类)和person2(派生类),person类包含两个私有成员的名称和城市,一个受保护成员roll_no,私有成员在public成员函数getPerson()dispPerson()中使用。

在person1类中,有一个私有成员city和三个公共成员函数set_roll_no(),它用于设置person类中受保护成员roll_no的值,getPerson1(),它调用person类的getPerson()成员函数,并获取city的输入。类似地,dispPerson1()——它调用dispPerson()成员函数,并打印roll_no和city的值

//受保护成员的示例

#include <iostream>
using namespace std;

//基类
class person {
    //私有成员
private:
    string name;
    int age;

    //受保护的成员
protected:
    int roll_no;

    //公共成员
public:
    void getPerson()
    {
        cout << "Enter name: ";
        cin >> name;
        cout << "Enter age: ";
        cin >> age;
    }
    void dispPerson()
    {
        cout << "Name: " << name << endl;
        cout << "Age: " << age << endl;
    }
};

//派生类
class person1 : public person {
    //私有
private:
    string city;

    //公共
public:
    void set_roll_no(int r)
    {
        //这里roll_no是个人的受保护成员
        //类,可以在这里访问
        roll_no = r;
    }
    void getPerson1()
    {
        //打电话getPerson()阅读基本细节        getPerson();
        //输入城市
        cout << "Enter city: ";
        cin >> city;
    }
    void dispPerson1()
    {
        //显示roll_no-
        cout << "Roll No.: " << roll_no << endl;
        //调用dispPerson()以打印基本详细信息        dispPerson();
        //显示城市也
        cout << "City: " << city << endl;
    }
};

//主要功能
int main(){
    //创建对象
    person1 per;
    //设定卷编号
    per.set_roll_no(101);
    //获取所有详细信息
    per.getPerson1();
    //打印所有详细信息
    per.dispPerson1();

    return 0;
}

输出结果

Enter name: Shivang
Enter age: 21
Enter city: Indore
Roll No.: 101
Name: Shivang
Age: 21
City: Indore

私有成员与受保护成员之间的区别

私有成员受保护的成员
私有成员用关键字private声明,后跟冒号(:)字符。受保护的成员使用关键字protected声明,后跟冒号(:)字符。
私有成员可以在声明它们的同一类中访问。受保护的成员可以在同一类中以及在派生/子/子类中访问。
也可以通过友元函数访问私有成员。无法通过友元函数访问受保护的成员。