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

C++類和對(duì)象之封裝詳解

 更新時(shí)間:2021年12月28日 09:38:32   作者:c語(yǔ)言宇  
大家好,本篇文章主要講的是C++類和對(duì)象之封裝詳解,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽

封裝的意義以及示例

封裝是C++面向?qū)ο笕筇卣髦?br /> 封裝的意義:

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

語(yǔ)法:class 類名{? 訪問(wèn)權(quán)限 : 屬性? /? 行為 };

在這里插入圖片描述

類的對(duì)象的公共數(shù)據(jù)成員可以使用直接成員訪問(wèn)運(yùn)算符 . 來(lái)訪問(wèn)。

示例1: 設(shè)計(jì)一個(gè)圓類,求圓的周長(zhǎng)

#include<iostream>
using namespace std;
#define PI 3.14
class Circle
{
	//訪問(wèn)權(quán)限
	//公共權(quán)限
public:
	//屬性
	int r;
	//行為
	double calculate()
	{
		return 2 * PI * r;
	}
};
int main()
{
	Circle a;
	a.r = 2;
	cout << a.calculate() << endl;
	system("pause");
	return 0;
}

示例2:設(shè)計(jì)一個(gè)學(xué)生類,屬性有姓名和學(xué)號(hào),可以給姓名和學(xué)號(hào)賦值,可以顯示學(xué)生的姓名和學(xué)號(hào)

#include<iostream>
#include<string>
using namespace std;
class student
{
public:
	string name;
	int Id;
	void CinSudent()
	{
		cin >> name;
		cin >> Id;
	}
	void ShowStudent()
	{
		cout << name << endl;
		cout << Id << endl;
	}
};
int main()
{
	student a;
	a.CinSudent();
	a.ShowStudent();
	system("pause");
	return  0;
}

訪問(wèn)權(quán)限

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

訪問(wèn)權(quán)限有三種:
1.public  公共權(quán)限
2.protected  保護(hù)權(quán)限
3.private   私有權(quán)限

公共權(quán)限 public

成員類內(nèi)可以訪問(wèn) 類外不可以訪問(wèn)

class Box
{
   public:
      double length;
      void setWidth( double wid );
      double getWidth( void );
};

保護(hù)權(quán)限 protected

成員類內(nèi)可以訪問(wèn) 類外不可以訪問(wèn) 兒子可以訪問(wèn)父親中的保護(hù)內(nèi)容 protected(受保護(hù))成員變量或函數(shù)與私有成員十分相似,但有一點(diǎn)不同, protected(受保護(hù))成員在派生類(即子類)中是可訪問(wèn)的。

class Box
{
   protected:
      double length;
      void setWidth( double wid );
      double getWidth( void );
};

下面的實(shí)例與前面的實(shí)例類似,在這里 width 成員可被派生類 smallBox 的任何成員函數(shù)訪問(wèn)。

私有權(quán)限 private

成員類內(nèi)可以訪問(wèn) 類外不可以訪問(wèn)

兒子可以訪問(wèn)父親中的私有內(nèi)容

私有成員變量或函數(shù)在類的外部是不可訪問(wèn)的,甚至是不可查看的。只有類和友元函數(shù)可以訪問(wèn)私有成員。

默認(rèn)情況下,類的所有成員都是私有的。例如在下面的類中,width 是一個(gè)私有成員,

這意味著,如果您沒(méi)有使用任何訪問(wèn)修飾符,類的成員將被假定為私有成員

class Box
{
   private:
      double length;
      void setWidth( double wid );
      double getWidth( void );
};

struct 和 class的區(qū)別

在C++中struct 和class的默認(rèn)訪問(wèn)權(quán)限不同
區(qū)別:
struct 默認(rèn)訪問(wèn)權(quán)限為公共
class 默認(rèn)訪問(wèn)權(quán)限為私有

#include<iostream>
using namespace std;
struct C1
{
	int m_A;//默認(rèn)權(quán)限為公有
};
class C2
{
	int m_A;//默認(rèn)權(quán)限為私有
};
int main()
{
	C1 c1;
	C2 c2;
	c1.m_A = 100;
	//c2.m_A = 100; 此處無(wú)法訪問(wèn)
	return 0;
}

成員屬性私有化

優(yōu)點(diǎn)1:將所有成員設(shè)置為私有,可以自己控制讀寫權(quán)限
優(yōu)點(diǎn)2:對(duì)于寫權(quán)限,我們可以檢測(cè)數(shù)據(jù)的有效性
示例:

#include<iostream>
#include<string>
using namespace std;
class Person
{
public:
	void Setname(string name1)
	{
		name = name1;
	}
	string Showname()
	{
		return name;
	}
	int Showage()
	{
		return age;
	}
private:   //私有權(quán)限
	string name;
	int age=18;
};
int main()
{
	Person a;
	a.Setname("張三");
	cout << "姓名為: " << a.Showname() << endl;
	cout << "年齡為: " << a.Showage() << endl;
	system("pause");
	return 0;
}

案例1:設(shè)計(jì)立方體類

要求:
設(shè)計(jì)立方體
求出立方體的面積和體積
分別用全局函數(shù)和成員函數(shù)判斷兩個(gè)立方體是否相等
代碼實(shí)現(xiàn):

#include<iostream>
#include<string>
using namespace std;
class Cube
{
public:
	//設(shè)置長(zhǎng)
	void setL(int l)
	{
		m_L = l;
	}
	//設(shè)置寬
	void setW(int w)
	{
		m_W = w;
	}
	//設(shè)置高
	void setH(int h)
	{
		m_H = h;
	}
	//獲取長(zhǎng)
	int getL()
	{
		return m_L;
	}
	//獲取寬
	int getW()
	{
		return m_W;
	}
	//獲取高
	int getH()
	{
		return m_H;
	}
	//獲取面積
	int calculateS()
	{
		return 2 * (m_L * m_W + m_L * m_H + m_W * m_H);
	}
	//獲取體積
	int calculateV()
	{
		return m_L * m_H * m_W;
	}
	//利用成員函數(shù)判斷兩個(gè)立方體是否相等
	bool isSameByClass(Cube& c)
	{
		if (m_H == c.getH() && m_L == c.getL() && m_W == c.getW())
			return true;
		else
			return false;
	}
private:
	int m_L;//長(zhǎng)
	int m_W;//寬
	int m_H;//高
};
//利用全局函數(shù)判斷兩個(gè)立方體是否相等
bool isSame(Cube &c1,Cube &c2)
{
	if (c1.getH() == c2.getH() && c1.getL() == c2.getL() && c1.getW() == c2.getW())
		return true;
	else
		return false;
}
int main()
{
	Cube c1;
	c1.setH(10);
	c1.setL(13);
	c1.setW(45);
	cout << "c1面積是:" << c1.calculateS() << endl;
	cout << "c2體積是:" << c1.calculateV() << endl;
	Cube c2;
	c2.setH(10);
	c2.setL(13);
	c2.setW(45);
//利用全局函數(shù)判斷
	if (isSame(c1, c2))
		cout << "c1和c2相等" << endl;
	else
		cout << "c1和c2不相等" << endl;
//利用成員函數(shù)判斷
	if (c1.isSameByClass(c2))
		cout << "c1和c2相等" << endl;
	else
		cout << "c1和c2不相等" << endl;
	system("pause");
	return 0;
}

案例2:點(diǎn)和圓的關(guān)系

要求:設(shè)計(jì)一個(gè)圓類型(Cricle),和一個(gè)(Point),計(jì)算點(diǎn)和圓的關(guān)系。
1. 點(diǎn)在圓外
2.點(diǎn)在圓內(nèi)
3.點(diǎn)在圓上

#include<iostream>
using namespace std;
class Point
{
public:
	//設(shè)置x
	void setX(int x)
	{
		m_X = x;
	}
	//設(shè)置y
	void setY(int y)
	{
		m_Y = y;
	}
	//獲取x
	int  getX()
	{
		return m_X;
	}
	int getY()
	{
		return m_Y;
	}
private:
	int m_X;
	int m_Y;

};
class Circle
{
public:
	//設(shè)置半徑
	void setR(int r)
	{
		m_R = r;
	}
	//獲取半徑
	int getR()
	{
		return m_R;
	}
	//設(shè)置圓心
	void setCenter(int x, int y)
	{
		m_Center.setX(x);
		m_Center.setY(y);
	}
	//獲取圓心
	Point getCenter()
	{
		return m_Center;
	}
private:
	int m_R; //半徑
	Point m_Center;//圓心
};
//判斷點(diǎn)和圓的關(guān)系
void isInCircle(Circle& c, Point& p)
{
	//計(jì)算距離的平方
	int distance = (c.getCenter().getX() - p.getX()) * (c.getCenter().getX() - p.getX()) +
		           (c.getCenter().getY() - p.getY()) * (c.getCenter().getY() - p.getY());
	//計(jì)算半徑的平方
	int RDistance = c.getR() * c.getR();
	//判斷關(guān)系
	if (distance == RDistance)
		cout << "點(diǎn)在圓上" << endl;
	else if (distance > RDistance)
		cout << "點(diǎn)在圓外" << endl;
	else
		cout << "點(diǎn)在圓內(nèi)" << endl;
}
int main()
{
	//創(chuàng)建一個(gè)圓
	Circle c;
	c.setR(10);
	c.setCenter(10, 0);
	Point p;
	p.setX(10);
	p.setY(10);
	//判斷關(guān)系
	isInCircle(c,p);
	system("pause");
	return 0;
}

總結(jié)

到此這篇關(guān)于C++類和對(duì)象之封裝詳解的文章就介紹到這了,更多相關(guān)C++封裝內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++ 大根堆排序?qū)W習(xí)筆記

    C++ 大根堆排序?qū)W習(xí)筆記

    這篇文章主要為大家介紹了C++ 大根堆排序的學(xué)習(xí)教程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • C++結(jié)構(gòu)體與類的區(qū)別詳情

    C++結(jié)構(gòu)體與類的區(qū)別詳情

    這篇文章主要介紹了C++結(jié)構(gòu)體與類的區(qū)別,C++中的struct對(duì)C中的struct進(jìn)行了擴(kuò)充,它已經(jīng)不再只是一個(gè)包含不同數(shù)據(jù)類型的數(shù)據(jù)結(jié)構(gòu)了,它已經(jīng)獲取了太多的功能。下面我們一起進(jìn)入文章倆姐具體內(nèi)容,需要的朋友也可以參考一下
    2021-11-11
  • C++的optional用法實(shí)例詳解

    C++的optional用法實(shí)例詳解

    編程中我們可能會(huì)遇到要處理可能為空的變量,比如說(shuō)容器,基本類型,或者說(shuō)對(duì)象實(shí)例,下面通過(guò)實(shí)例代碼介紹C++的optional用法,感興趣的朋友一起看看吧
    2024-02-02
  • C++輸出斐波那契數(shù)列的兩種實(shí)現(xiàn)方法

    C++輸出斐波那契數(shù)列的兩種實(shí)現(xiàn)方法

    以下是對(duì)C++中輸出斐波那契數(shù)列的兩種實(shí)現(xiàn)方法進(jìn)行了詳細(xì)的介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2013-10-10
  • C語(yǔ)言中strlen()函數(shù)的使用詳解

    C語(yǔ)言中strlen()函數(shù)的使用詳解

    strlen函數(shù)是用來(lái)求字符串長(zhǎng)度的函數(shù),這個(gè)函數(shù)遇到‘\0’就會(huì)停止,且這個(gè)長(zhǎng)度不包含‘\0’,這篇文章給大家介紹了C語(yǔ)言中strlen()函數(shù)的使用,感興趣的朋友一起看看吧
    2024-02-02
  • C++ 強(qiáng)制類型轉(zhuǎn)換詳解

    C++ 強(qiáng)制類型轉(zhuǎn)換詳解

    這篇文章主要介紹的是C++ 強(qiáng)制類型轉(zhuǎn)換詳解,C語(yǔ)言中的強(qiáng)制轉(zhuǎn)換主要用于普通數(shù)據(jù)類型、指針的強(qiáng)制轉(zhuǎn)換,沒(méi)有類型檢查,轉(zhuǎn)換不安全,下面我們來(lái)看看其具體語(yǔ)法及詳細(xì)內(nèi)容
    2021-11-11
  • C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的貪吃蛇游戲的示例代碼

    C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的貪吃蛇游戲的示例代碼

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言如何實(shí)現(xiàn)經(jīng)典貪吃蛇游戲,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C語(yǔ)言有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下
    2023-01-01
  • C++實(shí)現(xiàn)LeetCode(126.詞語(yǔ)階梯之二)

    C++實(shí)現(xiàn)LeetCode(126.詞語(yǔ)階梯之二)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(126.詞語(yǔ)階梯之二),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C/C++中數(shù)據(jù)類型轉(zhuǎn)換詳解及其作用介紹

    C/C++中數(shù)據(jù)類型轉(zhuǎn)換詳解及其作用介紹

    這篇文章主要介紹了C/C++中數(shù)據(jù)類型轉(zhuǎn)換詳解及其作用,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • C++實(shí)現(xiàn)單張圖片讀取和保存

    C++實(shí)現(xiàn)單張圖片讀取和保存

    這篇文章主要為大家詳細(xì)介紹了C++語(yǔ)言讀取和保存單張圖片的代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09

最新評(píng)論

安远县| 福鼎市| 汪清县| 洞头县| 江口县| 大埔区| 保康县| 长宁区| 金秀| 冕宁县| 额济纳旗| 淮阳县| 枝江市| 盱眙县| 榆林市| 云霄县| 柳江县| 阿图什市| 辽宁省| 义乌市| 钦州市| 滦平县| 宁化县| 班戈县| 白玉县| 广汉市| 蒲城县| 辉县市| 仁布县| 忻州市| 聂拉木县| 柞水县| 张家界市| 五指山市| 呼玛县| 大名县| 徐水县| 大同县| 龙胜| 喀喇沁旗| 镇原县|