珠海網(wǎng)站搜索引擎優(yōu)化青島seo服務(wù)
定義:
封裝性:
1.將屬性(成員變量)和行為(成員函數(shù))作為一個(gè)整體,表現(xiàn)在生活中的事物
2.將屬性和行為加以權(quán)限控制
(將事物的屬性(成員變量)和行為(成員函數(shù))封裝在一起形成一個(gè)類,并且設(shè)置相應(yīng)的訪問(wèn)權(quán)限)
C++中如何實(shí)現(xiàn)封裝:
將數(shù)據(jù)成員設(shè)為私有或保護(hù)類型,再提供公有成員函數(shù)訪問(wèn)和修改數(shù)據(jù),以此隱藏內(nèi)部實(shí)現(xiàn)細(xì)節(jié)
語(yǔ)法:
class+類名+{訪問(wèn)權(quán)限:屬性/行為};
例如:設(shè)計(jì)一個(gè)圓類,求圓的周長(zhǎng)
#include<iostream>
using namespace std;
class circle {
public://訪問(wèn)權(quán)限:共有的權(quán)限int r;double zhouchang() {return 2 * 3.14 * r;}
};
int main() {circle c1;//通過(guò)圓類,創(chuàng)造圓的對(duì)象,c1是一個(gè)具體的圓c1.r = 10;cout << "周長(zhǎng)為:" << c1.zhouchang() << endl;return 0;
}
好處:
1.數(shù)據(jù)隱藏
將數(shù)據(jù)成員設(shè)為私有(private),可以防止外部代碼直接訪問(wèn)和修改對(duì)象的內(nèi)部數(shù)據(jù),從而保證數(shù)據(jù)的完整性和安全性。
class A{
private:int length;int width;
public:A(int a, int b) : length(a), width(b) {//初始化參數(shù)列表}int fun() {return length * width;}
};
length?和?width?是?A?類的私有數(shù)據(jù)成員,外部代碼不能直接訪問(wèn)它們。只能通過(guò)fun() 這樣的公有成員函數(shù)來(lái)間接獲取與這些數(shù)據(jù)相關(guān)的信息。
2.提高代碼的可維護(hù)性
當(dāng)需要對(duì)類的內(nèi)部實(shí)現(xiàn)進(jìn)行修改時(shí),只要接口(公有成員函數(shù))不變,外部代碼不需要進(jìn)行修改。
class Circle {
private:double radius;
public:Circle(double r) : radius(r) {}double getArea() {return 3.14159 * radius * radius;}
};
如果之后想要提高?getArea?函數(shù)計(jì)算圓面積的精度,例如使用更精確的?π?值,只需要修改?getArea?函數(shù)內(nèi)部的實(shí)現(xiàn),而使用?Circle?類的外部代碼不需要進(jìn)行任何改變。
3.便于代碼的復(fù)用
封裝好的類可以很方便地在不同的項(xiàng)目或代碼部分中被復(fù)用。
class B {
private:int arr[100];int p;
public:B() : p(-1) {}void fun(int value) {arr[++p] = value;}int hhh() {return arr[p--];}
};
這個(gè) B?類可以在任何需要棧數(shù)據(jù)結(jié)構(gòu)的地方被復(fù)用,只要包含這個(gè)類的定義并按照其接口(?push?和 fun?函數(shù))來(lái)使用即可。