1.封裝的意義
封裝時C++面向?qū)ο笕筇匦灾?br />封裝的意義:
封裝的意義一:在設(shè)計類的時候,屬性和行為寫在一起,表現(xiàn)事物
語法:class 類名{ 訪問權(quán)限: 屬性 / 行為 }
示例1:設(shè)計一個圓類,求圓的的周長
#includeusing namespace std;
const double PI = 3.14;
//設(shè)計一個圓類,求圓的周長
//周長公式: 2 * PI * 半徑
//class代表設(shè)計一個類,類后緊跟著的就是類名稱
class Circle
{//訪問權(quán)限
//公共權(quán)限
public:
//屬性
int circle_r; //半徑
//行為
//獲取圓的周長
double caculateZC() {return 2 * PI * circle_r;
}
};
int main() {//通過圓類 創(chuàng)建具體的圓(對象)
Circle cl; //實例化:通過一個類創(chuàng)建一個對象
//給圓對象 的屬性進(jìn)行賦值
cl.circle_r = 10;
cout<< "圓的周長:"<< cl.caculateZC()<< endl;
return 0;
}
示例2:設(shè)計一個學(xué)生類,屬性有姓名和學(xué)號,可以給姓名和學(xué)號賦值,可以顯示學(xué)生的姓名和學(xué)號
#includeusing namespace std;
const double PI = 3.14;
//
//設(shè)計一個學(xué)生類,屬性有姓名和學(xué)號,可以給姓名和學(xué)號賦值,可以顯示學(xué)生的姓名和學(xué)號
class Student
{//訪問權(quán)限
public: //公共權(quán)限
//類中的屬性和行為,我們統(tǒng)一稱為成員
//屬性 成員屬性 成員變量
//行為 成員函數(shù) 成員方法
//屬性
int number; //學(xué)號
string name; //姓名
//行為
//顯示姓名和學(xué)號
void showStudent() {cout<< "姓名:"<< name<< endl;
cout<< "學(xué)號:"<< number<< endl;
}
//給姓名賦值
void setName(string st_name) {name = st_name;
}
//給姓名賦值
void setId(int id) {number = id;
}
};
int main() { //創(chuàng)建一個具體學(xué)生,,,實例化
Student st1;
//給st對象,進(jìn)行屬性賦值操作
st1.name = "小揚(yáng)";
st1.number = 1001;
//顯示學(xué)生信息
st1.showStudent();
Student st2;
st2.name = "小凡";
st2.number = 1002;
st2.showStudent();
Student st3;
st3.setName("小宇");
st3.setId(1003);
st3.showStudent();
return 0;
}
封裝的意義二:類在設(shè)計時,可以把屬性和行為放在不同的權(quán)限下,加以控制
訪問權(quán)限有三種:
#includeusing namespace std;
//訪問權(quán)限
//三種
//公共權(quán)限 public 成員 類內(nèi)可以訪問 類外可以訪問
//保護(hù)權(quán)限protected 成員 類內(nèi)可以訪問 類外不可以訪問 兒子可以訪問父親中的保護(hù)內(nèi)容
//私有權(quán)限private 成員 類內(nèi)可以訪問 類外不可以訪問 兒子不可以訪問父親的私有內(nèi)容
class Person
{public:
//公共權(quán)限
string m_name;
protected:
//保護(hù)權(quán)限
string m_car;
private:
//私有權(quán)限
int m_password;
public:
void func() {m_name = "小劉";
m_car = "奧迪";
m_password = 123;
}
};
int main() {//實例化具體對象
Person p1;
p1.m_name = "蛋蛋";
//p1.m_car = "保時捷"; //保護(hù)權(quán)限的內(nèi)容,在類外訪問不到
cout<< p1.m_name<< endl;
p1.func();
cout<< p1.m_name<< endl;
return 0;
}
2.struct和class 的區(qū)別
在C++中struct和class唯一的區(qū)別在于 默認(rèn)的訪問權(quán)限不同
區(qū)別:
#includeusing namespace std;
//struct 和class 區(qū)別
//struct 默認(rèn)權(quán)限是公共
//class 默認(rèn)權(quán)限是私有
class C1 {int m_A = 0; //默認(rèn)權(quán)限是 私有
};
struct C2 {int m_B = 1; //默認(rèn)權(quán)限是 公共
};
int main() {C1 c1;
//cout<< c1.m_A<< endl; //私有權(quán)限,不可訪問
C2 c2;
cout<< c2.m_B<< endl; //公共權(quán)限,可以訪問
return 0;
}
3.成員屬性設(shè)置為私有
優(yōu)點1:將所有成員屬性設(shè)置為私有,可以自己控制讀寫權(quán)限
優(yōu)點2:對于寫權(quán)限,我們可以檢測數(shù)據(jù)的有效性
#includeusing namespace std;
//成員屬性設(shè)置為私有
//1.可以自己控制讀寫全寫
//2.對于寫可以檢測數(shù)據(jù)的有效性
//設(shè)計人類
class Person
{private:
//姓名
string name;
//年齡
int age = 18;
//愛人
string lover;
public:
//設(shè)置姓名
void setName(string pname) {name = pname;
}
//獲取姓名
string getName() {return name;
}
void setAge(int page) {if (page< 0 || page>150) { age = 0;
cout<< "年齡有誤"<< endl;
return;
}
age = page;
}
//獲取年齡
int getAge() {
return age;
}
//獲取愛人
string getLover() {lover = "小揚(yáng)";
return lover;
}
};
int main() {Person p;
p.setName("小蛋");
cout<< "姓名為:"<< p.getName()<< endl;
p.setAge(200);
cout<< "年齡為:"<< p.getAge()<< endl;
cout<< "愛人為:"<< p.getLover()<< endl;
return 0;
}
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
網(wǎng)站標(biāo)題:【C++學(xué)習(xí)】List4.1類和對象——封裝-創(chuàng)新互聯(lián)
鏈接分享:http://chinadenli.net/article48/dghsep.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、軟件開發(fā)、網(wǎng)站制作、用戶體驗、移動網(wǎng)站建設(shè)、全網(wǎng)營銷推廣
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容