欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

帶你從頭學(xué)習(xí)C++的封裝

 更新時間:2022年02月08日 15:44:47   作者:超級小何  
這篇文章主要為大家從頭學(xué)習(xí)了C++的封裝,使用數(shù)據(jù)庫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

封裝

c++認(rèn)為萬事萬物皆為對象,對象上有其屬性和行為

封裝的意義:

  • 將屬性和行為作為一個整體,表現(xiàn)生活中的事物
  • 將屬性和行為加以權(quán)限控制

 封裝意義一:

在設(shè)計類的時候,屬性和行為寫在一起,表現(xiàn)事物

語法:

class  類名{  訪問權(quán)限:屬性 / 行為};

屬性和行為作為整體

#include<iostream>
using namespace std;
//圓周率
const double PI = 3.14;
//設(shè)計一個圓類,求圓的周長
//圓求周長的公式:2*PI*半徑
class Circle {
	//訪問權(quán)限
	//公共權(quán)限
public:
 		//屬性
		//半徑
 		int m_r;
	//行為
	//獲取圓的周長
		double calculateZC() {
			return 2 * PI * m_r;
		}
};
 int main() {
	//通過圓類,創(chuàng)建具體的圓(對象)
	//實例化  (通過一個類 創(chuàng)建一個對象的過程)
	Circle c1;
	//給圓對象的屬性進(jìn)行賦值
	c1.m_r = 10;
	//2 * PI * m_r = 62.8;
	cout << "圓的周長為:" << c1.calculateZC () << endl;
	system("pause");
	return 0;
}

 實例—設(shè)計學(xué)生類

#include<iostream>
using namespace std;
//#include<string>
//設(shè)計一個學(xué)生類,屬性有姓名和學(xué)號,可以給姓名和學(xué)號賦值,可以顯示學(xué)生的姓名和學(xué)號
//設(shè)計學(xué)生類
class Student {
public://公共權(quán)限
	//類中的屬性和行為 我們統(tǒng)一稱為 成員
	//屬性 成員屬性 成員變量
	//行為 成員函數(shù) 成員方法
 	//屬性
	string m_Name;//姓名
	int m_Id;//學(xué)號
	//行為
	//顯示姓名和學(xué)號
	void showStudent() {
		cout << "姓名:" << m_Name << "  學(xué)號:"<<m_Id << endl;
	}
	//給姓名賦值
	void setName(string name) {
		m_Name = name;
	}
	void setId(int Id) {
		m_Id = Id;
	}
};
int main() {
	//創(chuàng)建一個具體的學(xué)生  實例化對象
	Student s1;
	//給s1對象進(jìn)行屬性賦值操作
	//s1.m_Name = "張三";
	s1.setName("張三");
	//s1.m_Id = 1;
	s1.setId(1);
	s1.showStudent();
 	Student s2;
	s2.m_Name = "李四";
	s2.m_Id = 2;
	s2.showStudent();
	system("pause");
	return 0;
}

訪問權(quán)限

封裝意義二:

類在設(shè)計時,可以把屬性和行為放在不同的權(quán)限下,加以控制

權(quán)限訪問有三類:

  • public         公共權(quán)限
  • protected    保護權(quán)限
  • private        私有權(quán)限
#include<iostream>
using namespace std;
//訪問權(quán)限
//三種
//公共權(quán)限 public        成員  類內(nèi)可以訪問  類外也能訪問
//保護權(quán)限 protected     成員  類內(nèi)可以訪問  類外不可以訪問 兒子可以訪問到父親中的保護內(nèi)容
//私有權(quán)限 private		 成員  類內(nèi)可以訪問  類外不可以訪問 兒子不可以訪問到父親的私有內(nèi)容
class Person {
public:
	//公共權(quán)限
	string m_Name;//姓名
protected:
	//保護權(quán)限
	string m_Car;//汽車
private:
	int m_Password;//銀行卡密碼
public:
	void func() {
		m_Name = "張三";
		m_Car = "拖拉機";
		m_Password = 123456;
	}
};
int main() {
	//實例化具體對象
	Person p1;
	p1.m_Name = "李四";
	//p1.m_Car = "奔馳";//保護權(quán)限的內(nèi)容,在類外訪問不到
	//p1.m_Password = 123;//私有權(quán)限的內(nèi)容,在類外訪問不到
   	system("pause");
	return 0;
}

class與struct區(qū)別

在c++中struct和class唯一的區(qū)別就在于默認(rèn)的訪問權(quán)限不同

區(qū)別:

  • struct默認(rèn)權(quán)限為公共
  • class默認(rèn)權(quán)限為私有
#include<iostream>
using namespace std;
class C1 {
 	int m_A;//默認(rèn)權(quán)限 是私有
};
struct C2 {
	int m_A;//默認(rèn)權(quán)限 是公共
};
int main() {
	//struct和class區(qū)別
	//struct 默認(rèn)權(quán)限是 公有 public
	//class  默認(rèn)權(quán)限是 私有 private
	C1 c1;
	//c1.m_A = 100;//在class里默認(rèn)權(quán)限 私有,因此類外不可以訪問
 	C2 c2;
	c2.m_A = 100;//在struct默認(rèn)的權(quán)限為公共,因此可以訪問
	system("pause");
	return 0;
}

成員屬性私有化

  • 優(yōu)點1:將所有成員屬性設(shè)為私有,可以自己控制讀寫權(quán)限
  • 優(yōu)點2:對于寫權(quán)限,我們可以檢測數(shù)據(jù)的有效性
#include<iostream>
using namespace std;
#include<string>
//成員屬性設(shè)置為私有
//1.可以自己控制讀寫權(quán)限
//2.可以寫可以檢驗數(shù)據(jù)的有效性
//設(shè)計人類
class Person {
public:
	//設(shè)置姓名
	void setName(string name) {
		m_Name = name;
	}
	//獲取姓名
	string getName() {
		return m_Name;
	}
	//獲取年齡  只讀
	int getAge() {
		//m_Age = 0;//初始化零歲
		return m_Age;
	}
	void setAge(int age) {
		if (age < 0 || age>150) {
			m_Age = 0;
			cout << "你這個老妖精!" << endl;
			return;
		}
		m_Age = age;
	}
	//設(shè)置情人  只寫
	void setLover(string lover) {
		m_Lover = lover;
	}
 private:
	//姓名  可讀可寫
	string m_Name;
	//年齡  只讀
	int m_Age;
	//情人  只寫
	string m_Lover;
};
int main() {
	Person p;
	p.setName ( "張三");
	cout << "姓名為:" <<p.getName() << endl;
	//p.m_Age = 18;
	//p.setAge(18);
	p.setAge(18);
	cout << "年齡為:" << p.getAge() << endl;
	//設(shè)置情人為蒼井女士
	p.setLover("蒼井");
	//cout<<"情人為:"<<p.m_Lover << endl;只寫權(quán)限,數(shù)據(jù)不可以訪問到的
 	system("pause");
	return 0;
}

設(shè)計立方體類

#include<iostream>
using namespace std;
//立方體類設(shè)計
//1.創(chuàng)建立方體類
//2.設(shè)計屬性
//3.設(shè)計行為 獲取立方體面積和體積
//4.分別利用全局函數(shù)和成員函數(shù) 判斷兩個立方體是否相等
 class Cube {
public:
	//行為
	// 設(shè)置長
	void setL(int l) {
		m_L = l;
	}
	// 獲取長
	int getL() {
		return m_L;
	}
	// 設(shè)置寬
	void setW(int w) {
		m_W =w ;
	}
	// 獲取寬
	int getW() {
		return m_W;
	}
	// 設(shè)置高
	void setH(int h) {
		m_H = h;
	}
	// 獲取高
	int getH() {
		return m_H;
	}
	// 獲取立方體面積
	int calculateS() {
		return 2 * m_L * m_W + 2 * m_L * m_H + 2 * m_W * m_H;
	}
	// 獲取立方體體積
	int calculateV() {
		return m_L * m_W * m_H;
	}
	//利用成員函數(shù)判斷兩個立方體是否相等
	bool isSameByClass(Cube &c) {
		if (m_L == c.getL() && m_W == c.getW() && m_H == c.getH()) {
			return true;
		}
		return false;
	}
private:
	//屬性
	int m_L;//長
	int m_W;//寬
	int m_H;//高
};
//利用全局函數(shù)來判斷 兩個立方體是否相等
bool isSame(Cube &c1,Cube &c2) {
	if (c1.getL() == c2.getL() && c1.getW() == c2.getW() && c1.getH() == c2.getH()) {
		return true;
	}
	return false;
}
int main() {
	//創(chuàng)建立方體對象
	Cube c1;
	c1.setL(10);
	c1.setW(10);
	c1.setH(10);
	cout << "c1的面積為:" <<c1.calculateS() << endl;
	cout << "c1的體積為:" << c1.calculateV() << endl;
	//創(chuàng)建第二個立方體
	Cube c2;
	c2.setL(10);
	c2.setW(10);
	c2.setH(10);
 	//利用全局函數(shù)判斷
	bool ret = isSame(c1,c2);
	if (ret) {
		cout << "c1和c2是相等的" << endl;
	}
	else {
		cout << "c1和c2是不相等的" << endl;
	}
	//利用成員函數(shù)判斷
	ret = c1.isSameByClass(c2);
	if (ret) {
		cout << "成員函數(shù)判斷的:c1和c2是相等的" << endl;
	}
	else {
		cout << "成員函數(shù)判斷的:c1和c2是不相等的" << endl;
	}
	system("pause");
	return 0;
}

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!     

相關(guān)文章

  • C++中內(nèi)存池和內(nèi)存分配區(qū)Arena概念詳解

    C++中內(nèi)存池和內(nèi)存分配區(qū)Arena概念詳解

    在 C++ 中,內(nèi)存分配區(qū)(Arena)通常指的是預(yù)先分配的一大塊連續(xù)內(nèi)存空間,這種方法的主要目的是提高內(nèi)存分配和釋放的效率,下面就跟隨小編一起了解一下C++中內(nèi)存池和內(nèi)存分配區(qū)Arena相關(guān)概念吧
    2023-12-12
  • C++ 詳解數(shù)據(jù)結(jié)構(gòu)中的搜索二叉樹

    C++ 詳解數(shù)據(jù)結(jié)構(gòu)中的搜索二叉樹

    搜索二叉樹是一種具有良好排序和查找性能的二叉樹數(shù)據(jù)結(jié)構(gòu),包括多種操作,本篇只介紹插入,排序(遍歷),和刪除操作,重點是刪除操作比較復(fù)雜
    2022-04-04
  • C/C++高精度(加減乘除)算法的實現(xiàn)

    C/C++高精度(加減乘除)算法的實現(xiàn)

    高精度的算法,一般的方式是用一個很長的數(shù)組去記錄數(shù)據(jù),數(shù)組的每一位記錄固定位數(shù)的數(shù)字,記錄順序是低位到高位。本文將通過實例為大家介紹下高精度算法的實現(xiàn),感興趣的可以了解一下
    2022-12-12
  • 使用opencv實現(xiàn)車道線檢測實戰(zhàn)代碼

    使用opencv實現(xiàn)車道線檢測實戰(zhàn)代碼

    這篇文章主要介紹了opencv車道線檢測實戰(zhàn),效果非常逼真,代碼簡單易懂,對opencv車道線檢測實戰(zhàn)代碼感興趣的朋友一起看看吧
    2022-03-03
  • 利用C語言實現(xiàn)任務(wù)調(diào)度的示例代碼

    利用C語言實現(xiàn)任務(wù)調(diào)度的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用純C語言實現(xiàn)任務(wù)調(diào)度(可用于STM32、C51等單片機),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-04-04
  • C語言 表、棧和隊列詳解及實例代碼

    C語言 表、棧和隊列詳解及實例代碼

    這篇文章主要介紹了C語言 表、棧和隊列詳解及實例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • 使用c語言判斷100以內(nèi)素數(shù)的示例(c語言求素數(shù))

    使用c語言判斷100以內(nèi)素數(shù)的示例(c語言求素數(shù))

    這篇文章主要介紹了使用c語言判斷100以內(nèi)素數(shù)的示例(c語言求素數(shù)),需要的朋友可以參考下
    2014-03-03
  • C語言手撕一個Hash表(HashTable)實例代碼

    C語言手撕一個Hash表(HashTable)實例代碼

    哈希表(HashTable)是一種非常重要的數(shù)據(jù)結(jié)構(gòu),它可以在常量時間內(nèi)進(jìn)行插入、查找和刪除操作,下面這篇文章主要給大家介紹了關(guān)于C語言手撕一個Hash表(HashTable)的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • C++中函數(shù)重載詳解

    C++中函數(shù)重載詳解

    大家好,本篇文章主要講的是C++中函數(shù)重載詳解,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • 在C語言中比較兩個字符串是否相等的方法

    在C語言中比較兩個字符串是否相等的方法

    這篇文章主要介紹了在C語言中比較兩個字符串是否相等的方法,分別介紹了strcmp()函數(shù)和strcasecmp()函數(shù),注意功能區(qū)分,需要的朋友可以參考下
    2015-08-08

最新評論