当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C++ Private和Protected的区别用法及代码示例


受保护

protected 访问修饰符与 private 访问修饰符类似,不同之处在于声明为 Protected 的类成员在类外部不可访问,但可以被该类的任何子类(派生类)访问。
例子:

CPP


// C++ program to demonstrate
// protected access modifier
#include <bits/stdc++.h>
using namespace std;
// base class
class Parent {
    // protected data members
protected:
    int id_protected;
};
// sub class or derived class
class Child : public Parent {
public:
    void setId(int id)
    {
        // Child class is able to access the inherited
        // protected data members of the 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;
}
输出:
id_protected is: 81

私人的

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

CPP


// 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;
}
输出:
Radius is: 1.5
Area is: 7.065

私有和受保护之间的区别

私人的 受保护
声明为 private 的类成员只能由类内部的函数访问。 受保护的访问修饰符与私有访问修饰符类似。
私人成员将实施细节保留在程序中。 受保护的成员增强了对派生类的访问。
只有成员函数或友元函数才允许访问类的私有数据成员。 声明为 Protected 的类成员在类外部不可访问,但可以由该类的任何子类(派生类)访问。
私有成员不在类中继承。 受保护的成员在类中继承。


相关用法


注:本文由纯净天空筛选整理自Code_r大神的英文原创作品 Difference between Private and Protected in C++ with Example。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。