在类的声明中,类的成员前面使用public、private和protected关键字来修饰,这些修饰符称为成员访问权限限定符,用来决定其他类或函数可否访问该类的成员变量或成员函数。
私有成员访问控制
用关键字private修饰的成员称为私有成员,私有数据成员和成员函数只能在该类的内部使用,即私有数据成员只允许被该类中的成员函数访问,私有成员函数只允许被该类中的其他成员函数调用。private为类默认的访问权限限定符。
保护成员访问控制
用关键字protected修饰的成员称为保护成员,保护数据成员只允许被本类以及其子类的成员函数访问,保护成员函数只允许在本类以及其子类中调用。保护成员与私有成员类似,区别在于保护成员可以在其所在类的子类的成员函数中访问。
公有成员访问控制
用关键字public修饰的成员称为公有成员,公有数据成员不仅可以在类的内部访问,而且可以在类的外面访问,公有成员函数可以在类的内部和外部调用。
#include <iostream>
using namespace std;
class A
{
#A(){};
#~A(){};
int a;
};
int main()
{
A obj;
cout << obj.a << endl;
return 0;
}
#include <iostream>
using namespace std;
class A
{
int a;
public:
A():a(0){};
~A(){};
};
int main()
{
A obj;
cout << obj.a << endl;
return 0;
}
说明:
在C++中,类的默认访问权限是private,结构体的默认访问权限是public。
类的构造和析构函数如果没有定义的话,编译器会给类定义默认public权限的无参的构造和析构函数。这时是可以在类外实例化类的。
如果定义了无参数的构造和析构函数话,则是private权限,使无法在类外实例化的。单例类的构造和析构函数就是private权限的。