访问权限描述符
public
任何人都可以访问.
private
只有自己可以访问,即只有自己的成员函数才能访问.
描述的是谁的权限
访问描述符描述的是类与类之间的访问性,而不是对象和对象的访问性.
#include<iostream>
using namespace std;
class A
{
private:
int a;
public:
A(int a);
void SetOneA(A *pa, int a);
void PrintSelf();
};
A::A(int a)
{
this->a = a;
}
void A::SetOneA(A *pa, int a)
{
pa->a = a;
}
void A::PrintSelf()
{
cout << this->a << endl;
}
int main(int argc, char const *argv[])
{
int i = 0;
A *pa = new A(1);
pa->PrintSelf();
A b(2);
pa->SetOneA(&b, 3); //利用a对象,把b对象的私有字段设置成3
pa->PrintSelf();
b.PrintSelf();
return 0;
}
友元 friend
可以声明其他类,函数为自己的朋友,开放自身的私有数据给别人(友元)访问.
struct X;
struct Y
{
void f(X*);
};
struct X
{
private:
int i;
public:
void init();
friend void g(X*, int); //global friend
friend void Y::f(X*); //struct member friend
friend struct Z; //Entire struct is a friend
friend void h(); //fun is a friend
};
void X::init()
{
i = 0;
}
void g(X* x , int i)
{
x->i = i;
}
void Y::f(X* x)
{
x->i = 47;
}
struct Z
{
private:
int j;
};
int main(int argc, char const *argv[])
{
return 0;
}
class&struct
class中默认成员为private,struct中默认成员为public
父子类
在子类使用public方式继承父类时,不能访问父类private的成员,只能访问父类public和protected的成员对象。
原课程
文档信息
- 本文作者:Iven Li
- 本文链接:https://lutcraft.github.io/2023/07/29/C++%E5%9F%BA%E7%A1%80-%E8%AE%BF%E9%97%AE%E9%99%90%E5%88%B6/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)