每日文摘
簡約不是少,而是沒有多餘,足夠也不是多,而是剛好你在。
類的訪問權限
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;
}
}