最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

封裝

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

封裝的意義:

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

 封裝意義一:

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

語法:

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

屬性和行為作為整體

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

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

#include<iostream>
using namespace std;
//#include<string>
//設(shè)計(jì)一個(gè)學(xué)生類,屬性有姓名和學(xué)號(hào),可以給姓名和學(xué)號(hào)賦值,可以顯示學(xué)生的姓名和學(xué)號(hào)
//設(shè)計(jì)學(xué)生類
class Student {
public://公共權(quán)限
	//類中的屬性和行為 我們統(tǒng)一稱為 成員
	//屬性 成員屬性 成員變量
	//行為 成員函數(shù) 成員方法
 	//屬性
	string m_Name;//姓名
	int m_Id;//學(xué)號(hào)
	//行為
	//顯示姓名和學(xué)號(hào)
	void showStudent() {
		cout << "姓名:" << m_Name << "  學(xué)號(hào):"<<m_Id << endl;
	}
	//給姓名賦值
	void setName(string name) {
		m_Name = name;
	}
	void setId(int Id) {
		m_Id = Id;
	}
};
int main() {
	//創(chuàng)建一個(gè)具體的學(xué)生  實(shí)例化對(duì)象
	Student s1;
	//給s1對(duì)象進(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è)計(jì)時(shí),可以把屬性和行為放在不同的權(quán)限下,加以控制

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

  • public         公共權(quán)限
  • protected    保護(hù)權(quán)限
  • private        私有權(quán)限
#include<iostream>
using 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:
	int m_Password;//銀行卡密碼
public:
	void func() {
		m_Name = "張三";
		m_Car = "拖拉機(jī)";
		m_Password = 123456;
	}
};
int main() {
	//實(shí)例化具體對(duì)象
	Person p1;
	p1.m_Name = "李四";
	//p1.m_Car = "奔馳";//保護(hù)權(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)點(diǎn)1:將所有成員屬性設(shè)為私有,可以自己控制讀寫權(quán)限
  • 優(yōu)點(diǎn)2:對(duì)于寫權(quán)限,我們可以檢測(cè)數(shù)據(jù)的有效性
#include<iostream>
using namespace std;
#include<string>
//成員屬性設(shè)置為私有
//1.可以自己控制讀寫權(quán)限
//2.可以寫可以檢驗(yàn)數(shù)據(jù)的有效性
//設(shè)計(jì)人類
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 << "你這個(gè)老妖精!" << 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è)計(jì)立方體類

#include<iostream>
using namespace std;
//立方體類設(shè)計(jì)
//1.創(chuàng)建立方體類
//2.設(shè)計(jì)屬性
//3.設(shè)計(jì)行為 獲取立方體面積和體積
//4.分別利用全局函數(shù)和成員函數(shù) 判斷兩個(gè)立方體是否相等
 class Cube {
public:
	//行為
	// 設(shè)置長(zhǎng)
	void setL(int l) {
		m_L = l;
	}
	// 獲取長(zhǎng)
	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ù)判斷兩個(gè)立方體是否相等
	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;//長(zhǎng)
	int m_W;//寬
	int m_H;//高
};
//利用全局函數(shù)來判斷 兩個(gè)立方體是否相等
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)建立方體對(duì)象
	Cube c1;
	c1.setL(10);
	c1.setW(10);
	c1.setH(10);
	cout << "c1的面積為:" <<c1.calculateS() << endl;
	cout << "c1的體積為:" << c1.calculateV() << endl;
	//創(chuàng)建第二個(gè)立方體
	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++ STL之list雙向鏈表容器方式

    C++ STL之list雙向鏈表容器方式

    這篇文章主要介紹了C++ STL之list雙向鏈表容器方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • C語言實(shí)現(xiàn)電話簿項(xiàng)目

    C語言實(shí)現(xiàn)電話簿項(xiàng)目

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)電話簿項(xiàng)目,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • Matlab 數(shù)字圖像的濾波及邊緣檢測(cè)

    Matlab 數(shù)字圖像的濾波及邊緣檢測(cè)

    本文運(yùn)用文字、代碼以及示例詳細(xì)介紹了數(shù)字圖像的濾波以及圖像的邊緣檢測(cè),需要的朋友可以自己了解一下
    2021-08-08
  • 解讀C++編程中類模板的三種特化

    解讀C++編程中類模板的三種特化

    這篇文章主要介紹了C++編程中類模板的三種特化,需要的朋友可以參考下
    2016-01-01
  • Sublime Text 3 實(shí)現(xiàn)C語言代碼的編譯和運(yùn)行(示例講解)

    Sublime Text 3 實(shí)現(xiàn)C語言代碼的編譯和運(yùn)行(示例講解)

    下面小編就為大家?guī)硪黄猄ublime Text 3 實(shí)現(xiàn)C語言代碼的編譯和運(yùn)行(示例講解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09
  • Qt QMessageBox類使用教程

    Qt QMessageBox類使用教程

    QMessageBox類提供一個(gè)模態(tài)對(duì)話框,用于通知用戶或詢問用戶一個(gè)問題并接收答案。這篇文章主要介紹了QMessageBox的一些常用用法,需要的小伙伴快來學(xué)習(xí)一下
    2021-12-12
  • Dev C++中文亂碼的有效解決方案

    Dev C++中文亂碼的有效解決方案

    在DevC++中出現(xiàn)漢字亂碼的問題通常是由于編碼設(shè)置不正確導(dǎo)致的,本文通過圖文結(jié)合的方式給大家介紹了解決方法,對(duì)大家的解決問題有一定的幫助,需要的朋友可以參考下
    2025-04-04
  • C語言中快速排序和插入排序優(yōu)化的實(shí)現(xiàn)

    C語言中快速排序和插入排序優(yōu)化的實(shí)現(xiàn)

    這篇文章主要介紹了C語言中快速排序和插入排序優(yōu)化的實(shí)現(xiàn),包括雙向劃分快速排序方法的介紹,需要的朋友可以參考下
    2015-11-11
  • Qt無邊框窗口拖拽和陰影的實(shí)現(xiàn)

    Qt無邊框窗口拖拽和陰影的實(shí)現(xiàn)

    自定義窗口控件的無邊框,窗口事件由于沒有系統(tǒng)自帶邊框,無法實(shí)現(xiàn)拖拽拉伸等事件的處理,本文主要介紹了Qt無邊框窗口拖拽和陰影的實(shí)現(xiàn),感興趣的可以了解一下
    2024-01-01
  • C++調(diào)用tensorflow教程

    C++調(diào)用tensorflow教程

    今天小編就為大家分享一篇關(guān)于C++調(diào)用tensorflow教程,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-10-10

最新評(píng)論

红桥区| 准格尔旗| 南靖县| 子长县| 兖州市| 临城县| 冷水江市| 蚌埠市| 湄潭县| 翁牛特旗| 重庆市| 焉耆| 泰来县| 治多县| 张家川| 绥德县| 工布江达县| 龙胜| 贡觉县| 江油市| 玛曲县| 荣成市| 和田县| 五大连池市| 资溪县| 湟中县| 高阳县| 布尔津县| 罗江县| 吴江市| 武平县| 正镶白旗| 青冈县| 安国市| 岳阳市| 南皮县| 西吉县| 明溪县| 镇宁| 永德县| 化州市|