c++從入門到精通——C++語言的封裝

C++語言的封裝

  • 將屬性和行爲作爲一個整體,來表示生活中具體的事物
  • 有訪問權限
  • class 和struct唯一區別 默認權限不同
  1. class默認是private
  2. struct 默認是public
  • public 是類內類外都可以訪問到
  • protected 類內可以,類外不可以
  • private 類內可以,類外不可以

c語言

struct Person
{
	char mName[64];

	int mAge;

};

struct Dog
{
	char mName[64];

	int mAge;
};

void PersonEat(struct Person *p)
{
	printf("%s 在喫人飯 \n",p->mName);
}

void test01()
{
	struct Person p1;
	strcpy(p1.mName, "德瑪西亞");

	PersonEat(&p1);
}

運行德瑪西亞 在喫人飯
但是

void DogEat(struct Dog * dog)
{
	printf("%s 在喫狗糧 \n", dog->mName);
}

void test02()
{
	struct Dog d;
	strcpy(d.mName, "旺財");

	DogEat(&d);

	struct Person p1;
	strcpy(p1.mName, "老王");

	DogEat(&p1);

}

運行

旺財 在喫狗糧
老王 在喫狗糧

C語言封裝 屬性和行爲分開處理了 ,類型檢測不夠

c++的封裝

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;

struct Person
{
	char mName[64];

	int mAge;

	void PersonEat()
	{
		cout <<  mName <<"喫人飯" << endl;
	}

};

struct Dog
{
	char mName[64];

	int mAge;

	void DogEat()
	{
		cout << mName << "喫狗糧" << endl;
	}

};

//C++中的封裝 嚴格類型轉換檢測, 讓屬性和行爲 綁定到一起
void test01()
{
	Person p1;
	strcpy(p1.mName, "老王");
	p1.PersonEat();
}

int main(){
	test01();
	system("pause");
	return EXIT_SUCCESS;
}

c++語言的public、protected、private

  • public 類內 類外 都可以訪問
  • protected 類內可以訪問 類外 不可以訪問 (子類可以方法)
  • private 類內可以訪問 類外 不可以訪問 (子類不可以方法)
class Animal
{
private:
	//如果我不聲明權限,默認的權限是 private
	void eat(){ mAge = 100; };

	int mAge;

public:
	int mHeight;

protected: //保護權限 類內部可以訪問 ,(當前類的子類可以訪問) , 類外部不可以訪問

	int mWeight;

	void setWeight(){ mWeight = 100; };
};

//所謂私有權限 就是私有成員(屬性、函數) 在類內部可以訪問,類外部不可以方法
//公共權限 ,在類內部和類外部都可以訪問
void test02()
{
	Animal an;
	//an.eat();
	//an.mAge; //私有不可以訪問到

	an.mHeight = 100; //公有權限在類外部可以訪問到
	//an.mWeight = 100; //保護權限 在類外不可訪問到
}
  • 建議將所有成員屬性設置爲私有
  • 自己提供公共的對外接口來進行 set或者get方法訪問
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章