类的成员有三种访问权限:public private protected。
在类的内部(类的成员函数中),无论成员被声明为public还是private都可以访问;
在类的外部(定义类的代码之外),只能访问public成员,不能访问private和protected的成员;
#include <iostream>
#include <string>
using namespace std;
class person
{public:
string name;
private:
int age;
void setvalue(string name1, int age1);
public:
void show() {
cout << "姓名: " << name << ", 年龄:" << age << endl;
}
};
void person::setvalue(string name1, int age1) {
name = name1;
age = age1;
}
int main() {
person zhongjiaming;
zhongjiaming.setvalue("钟佳铭", 19);
zhongjiaming.show();
return 0;
}
报错了——无法访问私有成员。
如果把public移到上面去,setvalue()方法就成为了公有成员,如下;
#include <iostream>
#include <string>
using namespace std;
class person
{public:
string name;
private:
int age;
public:
void setvalue(string name1, int age1);
void show() {
cout << "姓名: " << name << ", 年龄:" << age << endl;
}
};
void person::setvalue(string name1, int age1) {
name = name1;
age = age1;
}
int main() {
person zhongjiaming;
zhongjiaming.setvalue("钟佳铭", 19);
zhongjiaming.show();
return 0;
}
age这个成员是类私有的,但是你setvalue和show函数都是类的成员函数属于类的内部,是可以访问的,如果在外部访问他(age),比如在main函数中,就会报错。
结构体的成员缺省为public,类的成员缺省为private。
对类来说如果生么权限都不设置,那么全部成员的权限都是私有的;
报错一大堆,所有的成员都不可访问。