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

C++核心編程之類和對(duì)象詳解

 更新時(shí)間:2021年09月03日 15:00:05   作者:Gigi Princess  
這篇文章主要介紹了C++編程進(jìn)階之類和對(duì)象用法等相關(guān)使用技巧,需要的朋友可以參考下,希望能夠給你帶來幫助

C++面向?qū)ο笕筇匦裕?code>封裝、繼承、多態(tài)

1.封裝

1.1封裝的意義

  • 將屬性和行為作為一個(gè)整體
  • 將屬性和行為加以權(quán)限控制

封裝意義一:

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

//實(shí)例1
#define _CRT_SECURE_NO_WARNINGS 1
//求圓的周長(zhǎng)
#include<iostream>
using namespace std;
#define pi 3.14
class circle
{
public:
	int m_d;//直徑
	double calculate()
	{
		return pi*m_d;
	}
};
int main()
{
	circle c1;
	c1.m_d = 10;
	cout << "圓周長(zhǎng)為" << c1.calculate() << endl;
	system("pause");
	return 0;
}
//實(shí)例2
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;
#include <string>
class Student
{
public:
	string m_name;
	int m_num;
	void showStudent()
	{
		cout << " 姓名:" << "\t" << m_name << " 學(xué)號(hào):" << m_num << endl;
	}
	void setname(string name)
	{
		m_name = name;
	}
	void setnum(int num)
	{
		m_num = num;
	}
};
int main()
{
	Student s1;
	s1.setname("zhangsan");
	s1.setnum(2001);
	s1.showStudent();
	Student s2;
	s2.setname("lisi");
	s2.setnum(2002);
	s2.showStudent();
    system("pause");
	return 0;
}

總結(jié):類中的 屬性行為 統(tǒng)一稱為 成員

類中的 屬性 又稱為 成員屬性 成員變量

類中的 行為 又稱為 成員函數(shù) 成員方法

封裝意義二

訪問權(quán)限有三種

公共權(quán)限: public 成員類內(nèi)可以訪問,類外可以訪問

保護(hù)權(quán)限: protected 成員類內(nèi)可以訪問,類外不可以訪問 兒子可以訪問父親中的保護(hù)內(nèi)容

私有權(quán)限: private 成員類內(nèi)可以訪問,類外不可以訪問 兒子不可以訪問父親中的保護(hù)內(nèi)容

#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;
#include <string>
class Student
{
public:
	string m_name;
protected:
	int m_num;
private:
	int m_age;
public:
	void func()
	{
		m_name = "lili";
		m_num = 1;
		m_age = 30;
	}
private:
	void func1()
	{
		m_name = "lili";
		m_num = 1;
		m_age = 30;
	}
};
int main()
{
	Student s1;
	s1.m_name = "lilllll";
	//s1.m_num = 2;//不可訪問
	//s1.m_age = 20;//不可訪問
	s1.func();
	//s1.func1();//不可訪問
    system("pause");
	return 0;
}

1.2 struct 和 class 區(qū)別

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

  • struct 默認(rèn)權(quán)限為公共
  • class 默認(rèn)權(quán)限為私有
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;
class C1
{
	string m_a;
};
struct C2
{
	string m_b;
};
int main()
{
	//C1 c1;
	//c1.m_a = "lili";//不可訪問
	C2 c2;
	c2.m_b = "lili";
    system("pause");
	return 0;
}

1.3 成員屬性設(shè)置為私有

優(yōu)點(diǎn):

  • 將所有成員屬性設(shè)置為私有,可以自己控制讀寫權(quán)限
  • 對(duì)于寫權(quán)限,我們可以檢測(cè)數(shù)據(jù)的有效性
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include <string>
using namespace std;
class C1
{
public:
	void setname(string name)
	{
		m_name = name;
	}
	string getname()
	{
		return m_name;
	}
	int getnum()
	{
		return m_num;
	}
	void setage(int age)
	{
		m_age = age;
	}
private:
	string m_name;
	int m_num;
	int m_age;
};
int main()
{
	C1 c;
	c.setname("yangyang");//可寫
	cout << c.getname() << endl;//可讀
	cout << c.getnum() << endl;//只讀
	c.setage(30);//只寫
    system("pause");
	return 0;
}

好的,到這里封裝就算是學(xué)到手了,可以進(jìn)行兩個(gè)小案例:

#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include <string>
using namespace std;
class Cube
{
public:
	void setchang(int chang)
	{
		m_c = chang;
	}
	void setkuan(int kuan)
	{
		m_k = kuan;
	}
	void setgao(int gao)
	{
		m_g = gao;
	}
	int getchang()
	{
		return m_c;
	}
	int getkuan()
	{
		return m_k;
	}
	int getgao()
	{
		return m_g;
	}
	int S()
	{
		return 2 * (m_c*m_g + m_c*m_k + m_g*m_k);
	}
	int V()
	{
		return m_c*m_g*m_k;
	}
	bool isSamebyclass(Cube &c)
	{
		if (m_c == c.getchang() && m_g == c.getgao() && m_k == c.getkuan())
		{
			return true;
		}
		return false;
	}
private:
	int m_c;
	int m_k;
	int m_g;
};
bool isSame1(Cube &c1, Cube &c2)
{
	if (c1.getchang() == c2.getchang() && c1.getgao() == c2.getgao() && c1.getkuan() == c2.getkuan())
	{
		return true;
	}
	return false;
}
int main()
{
	Cube c1;
	c1.setchang(10);
	c1.setkuan(10);
	c1.setgao(10);
	cout << "面積:" << c1.S() << endl;
	cout << "體積:" << c1.V() << endl;
	Cube c2;
	c2.setchang(11);
	c2.setkuan(11);
	c2.setgao(11);
	cout << "面積:" << c2.S() << endl;
	cout << "體積:" << c2.V() << endl;
	bool ret = isSame1(c1, c2);
	if (ret)
	{
		cout << "全局函數(shù)判斷:兩個(gè)立方體相等" << endl;
	}
	else
	{
        cout << "全局函數(shù)判斷:兩個(gè)立方體不相等" << endl;
	}
	ret = c1.isSamebyclass(c2);
	if (ret)
	{
		cout << "成員函數(shù)判斷:兩個(gè)立方體相等" << endl;
	}
	else
	{
		cout << "成員函數(shù)判斷:兩個(gè)立方體不相等" << endl;
	}
	system("pause");
	return 0;
}
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include <string>
using namespace std;
class Point
{
public:
	void setX(int x)
	{
		m_x = x;
	}
	int getX()
	{
		return m_x;
	}
	void setY(int y)
	{
		m_y = y;
	}
	int getY()
	{
		return m_y;
	}
private:
	int m_x;
	int m_y;
};
class Circle
{
public:
	void setR(int r)
	{
		m_r = r;
	}
	int getR()
	{
		return m_r;
	}
	void setcenter(Point center)
	{
		m_center = center;
	}
	Point getcenter()
	{
		return m_center;
	}
private:
	int m_r;
	Point m_center;
};
void C_and_P(Circle &c, Point &p)
{
	int distance = (c.getcenter().getX() - p.getX())*(c.getcenter().getX() - p.getX()) + (c.getcenter().getY() - p.getY())* (c.getcenter().getY() - p.getY());
	int doubleR = c.getR()*c.getR();
	if (distance==doubleR)
	{
		cout << "點(diǎn)在圓上" << endl;
	}
	else if (distance<doubleR)
	{
		cout << "點(diǎn)在圓內(nèi)" << endl;
	}
	else
	{
		cout << "點(diǎn)在圓外" << endl;
	}
}
int main()
{
	Point p;
	p.setX(10);
	p.setY(30);
	Circle c;
	c.setR(10);
	Point center;
	center.setX(26);
	center.setY(43);
	C_and_P(c, p);
    system("pause");
	return 0;
}

總結(jié)

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

相關(guān)文章

  • wchar_t,char,string,wstring之間的相互轉(zhuǎn)換

    wchar_t,char,string,wstring之間的相互轉(zhuǎn)換

    以下是對(duì)wchar_t,char,string,wstring之間的相互轉(zhuǎn)換進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助
    2013-09-09
  • 詳解如何實(shí)現(xiàn)C++虛函數(shù)調(diào)用匯編代碼

    詳解如何實(shí)現(xiàn)C++虛函數(shù)調(diào)用匯編代碼

    多態(tài)是C++中最重要的特性之一,對(duì)虛函數(shù)的調(diào)用在C++代碼中是隨處可見的,本篇文章我們?cè)敿?xì)探討一下,感興趣的朋友快來看看吧
    2021-11-11
  • C/C++獲取主機(jī)網(wǎng)卡MAC地址的三方法

    C/C++獲取主機(jī)網(wǎng)卡MAC地址的三方法

    MAC地址(Media Access Control address),又稱為物理地址或硬件地址,是網(wǎng)絡(luò)適配器(網(wǎng)卡)在制造時(shí)被分配的全球唯一的48位地址,通過獲取MAC地址可以判斷當(dāng)前主機(jī)的唯一性可以與IP地址綁定并實(shí)現(xiàn)網(wǎng)絡(luò)準(zhǔn)入控制,本文給大家介紹了使用C/C++獲取主機(jī)網(wǎng)卡MAC地址的三方法
    2023-11-11
  • Qt中TCP協(xié)議通信詳解

    Qt中TCP協(xié)議通信詳解

    這篇文章主要為大家詳細(xì)介紹了Qt中TCP協(xié)議通信,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • opencv?C++模板匹配的簡(jiǎn)單實(shí)現(xiàn)

    opencv?C++模板匹配的簡(jiǎn)單實(shí)現(xiàn)

    這篇文章主要介紹了opencv?C++模板匹配的簡(jiǎn)單實(shí)現(xiàn),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-02-02
  • 學(xué)生成績(jī)管理系統(tǒng)C語(yǔ)言代碼實(shí)現(xiàn)

    學(xué)生成績(jī)管理系統(tǒng)C語(yǔ)言代碼實(shí)現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言代碼實(shí)現(xiàn)學(xué)生成績(jī)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • C++實(shí)現(xiàn)貪吃蛇游戲

    C++實(shí)現(xiàn)貪吃蛇游戲

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)貪吃蛇游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • Qt 實(shí)現(xiàn)桌面雪花飄落代碼

    Qt 實(shí)現(xiàn)桌面雪花飄落代碼

    這篇文章主要介紹了Qt實(shí)現(xiàn)桌面雪花飄落代碼,有需要的朋友可以參考一下
    2013-12-12
  • C++基于回溯法解決八皇后問題示例

    C++基于回溯法解決八皇后問題示例

    這篇文章主要介紹了C++基于回溯法解決八皇后問題,簡(jiǎn)單描述了八皇后問題,以及回溯法的原理與解決八皇后問題的相關(guān)操作技巧,需要的朋友可以參考下
    2017-11-11
  • C語(yǔ)言實(shí)現(xiàn)掃雷OvO(完整代碼)

    C語(yǔ)言實(shí)現(xiàn)掃雷OvO(完整代碼)

    相信大家都玩過掃雷游戲,因?yàn)樗?jīng)典了,今天我們用C語(yǔ)言來模擬實(shí)現(xiàn)掃雷游戲,結(jié)合示例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2022-04-04

最新評(píng)論