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 的类成员在类外部不可访问,但可以由该类的任何子类(派生类)访问。 |
私有成员不在类中继承。 | 受保护的成员在类中继承。 |
相关用法
- C++ Power用法及代码示例
- C++ cos()用法及代码示例
- C++ sin()用法及代码示例
- C++ asin()用法及代码示例
- C++ atan()用法及代码示例
- C++ atan2()用法及代码示例
- C++ acos()用法及代码示例
- C++ tan()用法及代码示例
- C++ sinh()用法及代码示例
- C++ ceil()用法及代码示例
- C++ tanh()用法及代码示例
- C++ fmod()用法及代码示例
- C++ acosh()用法及代码示例
- C++ asinh()用法及代码示例
- C++ floor()用法及代码示例
- C++ atanh()用法及代码示例
- C++ log()用法及代码示例
- C++ trunc()用法及代码示例
- C++ round()用法及代码示例
- C++ lround()用法及代码示例
- C++ llround()用法及代码示例
- C++ rint()用法及代码示例
- C++ lrint()用法及代码示例
- C++ log10()用法及代码示例
- C++ modf()用法及代码示例
注:本文由纯净天空筛选整理自Code_r大神的英文原创作品 Difference between Private and Protected in C++ with Example。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。