在C++中Private和Protected的区别(带例子)

在C++中Private和Protected的区别(带例子)

Protected

Protected访问修饰符和私有访问修饰符类似,区别在于,声明为Protected的类成员无法在类外部访问,但是它们可以被该类的任何子类(派生类)访问。

示例:

// C++程序演示
// 受保护的访问修饰符

#include <bits/stdc++.h>
using namespace std;

// 基类
class Parent {

    // 受保护的数据成员
protected:
    int id_protected;
};

// 子类或派生类
class Child : public Parent {

public:
    void setId(int id)
    {

        // 子类能够访问基类继承的受保护的数据成员

        id_protected = id;
    }

    void displayId()
    {
        cout << "id_protected is: "
              << id_protected << endl;
    }
};

// 主函数
int main()
{

    Child obj1;

    // 派生类的成员函数可以访问基类的受保护的数据成员

    obj1.setId(81);
    obj1.displayId();
    return 0;
}  

输出:

id_protected is: 81

Private

声明为private的类成员只能被类内部的函数访问。任何对象或函数都不允许直接访问它们。只有成员函数或友元函数才被允许访问类的私有数据成员。

示例:

// C++程序演示私有的
// 访问修饰符

#include <iostream>
using namespace std;

class Circle {

    // 私有数据成员
private:
    double radius;

    // 公共成员函数
public:
    void compute_area(double r)
    {
        // 成员函数可以访问私有数据成员半径

        radius = r;

        double area = 3.14 * radius * radius;

        cout << "Radius is: " << radius << endl;
        cout << "Area is: " << area;
    }
};

// 主函数
int main()
{
    // 创建类的对象
    Circle obj;

    // 尝试直接在类外部访问私有数据成员
    obj.compute_area(1.5);

    return 0;
}  

输出:

Radius is: 1.5
Area is: 7.065

Private和Protected的区别

Private Protected
声明为private的类成员只能被类内部的函数访问。 受保护的访问修饰符和私有访问修饰符类似。
私有成员保留程序中的实现细节。 受保护的成员增强了派生类的访问权限。
只有成员函数或友元函数才被允许访问类的私有数据成员。 声明为Protected的类成员无法在类外部访问,但是它们可以被该类的任何子类(派生类)访问。
私有成员在类中不会被继承。 受保护的成员在类中可以被继承。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程