什么是封裝
封裝是面向?qū)ο?/em>編程中的把數(shù)據(jù)和操作數(shù)據(jù)的函數(shù)綁定在一起的一個概念极阅,這樣能避免受到外界的干擾和誤用喳挑,從而確保了安全亡资。
C++ 通過創(chuàng)建類來支持封裝验烧。
數(shù)據(jù)成員&成員函數(shù):構(gòu)成精彩而完整的類
類的定義,以dog類為例:
class Dog
{
public:
//數(shù)據(jù)成員(屬性)
string m_strName;
int m_iAge;
//成員函數(shù)(方法)
void speak();
void run();
}
注意:Dog類中并不包含狗的全部信息,而是針對不同目的抽象出不同的信息色瘩。
訪問限定符:
public:希望暴露的信息用public限定
private:希望隱藏的信息用private限定
protected:
構(gòu)造函數(shù)&析構(gòu)函數(shù):描述對象的生生死死
實例化對象有兩種方式:
- 從棧中實例化
對上述Dog類進行實例化并訪問類的數(shù)據(jù)成員:
int main()
{
Dog dog;//使用完后系統(tǒng)會自動釋放內(nèi)存
dog.m_strName = "二哈";//對象成員的訪問
dog.run();
Dog dog[4];
return 0;
}
- 從堆中實例化
同樣對上述Dog類進行實例化并訪問類的數(shù)據(jù)成員:
int main()
{
Dog *p = new Dog();//new運算符申請一段內(nèi)存
Dog *p = new Dog[4];
//對象數(shù)組對數(shù)據(jù)成員的訪問,用循環(huán)
for (int i = 0; i < 4; i++)
{
p[i]->run();
}
p->m_strName = "二哈";
p->run();
//從堆中實例化對象后一定要記得釋放內(nèi)存
delete p;
p = NULL;
delete [] p;
return 0;
}