每日文摘
简约不是少,而是没有多余,足够也不是多,而是刚好你在。
类的访问权限
public :类内可以访问,类外也可以访问。
protected:类内可以访问,类外不可以访问,子类可以访问父类中的保护内容。
private: 类内可以访问,类外不可以访问,子类不可以访问父类中的保护内容。
class Student {
public:
string name;
protected:
string six;
private :
int grade;
public:
void set(string name, string sex, int grade) {
this->grade = grade;
this->name = name;
this->six = sex;
}
void get() {
cout <<"姓名: "<< name << " 性别:"<<six <<" 成绩"<< grade << endl;
}
};
int main() {
Student lili;
//lili.name = "李铁柱";
//lili.six = "女"; protected 不可访问
//lili.grade = 98; private 不可访问
//那怎么办呢?
lili.set("李铁柱", "女", 98);
lili.get();//姓名:李铁柱 性别:女 成绩:98
}
因为six 为保护权限 ,grade 为私有权限,在类外不能调用
在图中可以看得在类外调用时只出现了 name方法;那如何去设置和输出非共有权限的值呢?可以调用类中的方法,如图
Class和struct的区别
唯一的区别:
Class的默认访问属性是私有 private,
struct的默认访问权限是 公共 public
成员属性设置为私有
优点:
1.可以自己控制读写
class Student {
private :
string name;
int grade;
public:
void setname(string name) {
this->name = name;
}
void setgrade(int grade) {
this->grade = grade;
}
string getname() {
return name;
}
int getgrade() {
return grade;
}
};
int main() {
Student stu;
stu.setname ("李铁锤");
stu.setgrade ( 66);
cout<<stu.getname()<<endl;//李铁锤
cout << stu.getgrade()<< endl;//66
}
2.可以检验数据的有效性
加入成绩满分为100分,那输入成绩时超过100分就应该是错误了,怎么实现呢?
void setgrade(int grade) {
if(0<=grade<=100){
this->grade = grade;
} else{
cout<<"输入成绩有误"<<endl;
grade=0;
return grade;
}
}