C++類的訪問權限

每日文摘

簡約不是少,而是沒有多餘,足夠也不是多,而是剛好你在。

類的訪問權限

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;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章