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

c++類和對象基本概念

 更新時間:2021年11月24日 10:47:48   作者:Huang?Jason  
這篇文章主要為大家介紹了c++類和對象,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

什么是類?

一系列事物的抽象,對于c++而言,萬事萬物都可以是類。

類包括:屬性+行為

屬性:事物特征->數(shù)據(jù)類型描述;

行為事物的操作->函數(shù)描述;

什么是對象?

類的具體化,類的實例化,抽象->具象;

類的特點:封裝、繼承、派生、多態(tài)。

類的定義

創(chuàng)建方法:class

class 類名{

//權(quán)限限定詞

public:

protected://保護屬性

private://當(dāng)不做繼承時,數(shù)據(jù)成員寫成私有屬性

};//一定有一個分號

權(quán)限限定詞作用:類外只能訪問public屬性下面的東西(接口),類外訪問類中數(shù)據(jù)只能通過對象訪問(static成員除外)

若類中申明類外實現(xiàn),需要用類名限定(告訴別人函數(shù)屬于哪個類的)

沒有寫在權(quán)限限定詞下的屬性,默認私有屬性。

權(quán)限限定詞只是限定類外對類中的訪問,對類內(nèi)無權(quán)限之分。

結(jié)構(gòu)體中默認屬性是共有屬性

創(chuàng)建對象

普通對象、對象數(shù)組(使用較少)

#include <iostream>
#include <string>
using namespace std;
class MM 
{
public:
	void print() 
	{
		cout << name << "\t" << age << endl;
	}
	void initData(string nname,int nage) 
	{
		name = nname;
		age = nage;
	}
protected:
	//新標(biāo)準(zhǔn),可以在類中給數(shù)據(jù)直接初始化
	string name="默認值";
	int age=0;
};
int main() 
{
	//沒有寫構(gòu)造函數(shù)的情況下,和C語言的創(chuàng)建方式是一樣的
	MM  mm;
	mm.print();			//沒有初始化數(shù)據(jù)
	MM mmArray[4];		//一般很少用對象數(shù)組
	//mmArray[0]----mmArray[3]
	//數(shù)組: 多個變量名有規(guī)律,內(nèi)存連續(xù)的變量的集合
	for (int i = 0; i < 4; i++) 
	{
		mmArray[i].initData(string("name") + to_string(i), i + 19);
		mmArray[i].print();
	}
	MM* p = new MM;
	p->initData("張三", 18);
	p->print();
	delete p;
	p = nullptr;
	return 0;
}
#include <iostream>
#include <string>
using namespace std;
class GirlFriend
{
	void print() 
	{
		cout << "不在限定詞下的屬性" << endl;
		cout << "默認為私有屬性" << endl;
	}
public:
	//共有屬性
	//成員函數(shù)
	//類中實現(xiàn)函數(shù)
	void  printData() 
	{
		cout << m_name << "\t" << m_age << endl;
	}
	//為了訪問不能訪問的部分,通常提供一些接口
	void  initData(string name, int age);
protected:
	//保護屬性
	//數(shù)據(jù)成員
	string m_name;
private:
	//當(dāng)前類不做繼承處理,數(shù)據(jù)成員寫成私有屬性
	int m_age;
};
//類外實現(xiàn)類中函數(shù),需要類名限定,告訴別人這個函數(shù)是哪里來的
void GirlFriend::initData(string name,int age)  
{
	//Lisa.initData("Lisa", 19);  name="Lisa" age=19
	m_name = name;    //Lisa.m_name=Lisa
	m_age = age;	  //Lisa.m_age=19;
	//mm.initData("MM", 29);   name="MM" age=29
	//mm.m_name=MM;
	//mm.age=29
}
struct MM 
{
	int num;   //默認屬性是公有屬性
protected:
	string name;
private:
	int age;
};
void testMM() 
{
	//MM mm = { 1001,"name",28 };
	MM mm;
	mm.num = 103;
	//mm.name = "Ilove";
	//mm.age = 13;
}
int main()
{
	GirlFriend  Lisa;
	Lisa.initData("Lisa", 19);
	Lisa.printData();
	//類外只能訪問public
	//Lisa.m_name = "Lisa";
	//Lisa.m_age = 18;
	GirlFriend mm;
	mm.initData("MM", 29);
	mm.printData();
	//mm.print();  --->不能訪問私有屬性
 
	return 0;
}

成員訪問(初始化)

1.提供共有接口來初始化數(shù)據(jù)(傳參)

2.通過提供共有接口返回值方式初始化數(shù)據(jù)

#include <iostream>
#include <string>
using namespace std;
class MM
{
public:
	//傳參
	void initData(string name, int age)
	{
		m_name = name;
		m_age = age;
	}
	//返回引用
	string& getName() 
	{
		return m_name;
	}
	int& getAge() 
	{
		return m_age;
	}
	void print() 
	{
		cout << m_name << "\t" << m_age << endl;
	}
protected:
	//默認初始化
	string m_name="默認值";
	int m_age=0;
	//不做初始化是一個垃圾值
};
 
int main() 
{
	MM girl;
	girl.initData("girl", 19);
	girl.print();
 
	MM mm;
	mm.getName() = "mm";
	mm.getAge() = 18;
	mm.print();
 
	MM boy;
	boy.print();
 
	return 0;
}

c++有頭鏈表與c對比:

#include <iostream>
#include <string>
using namespace std;
#if 0
struct Node
{
	int data;
	struct N ode* next;
};
struct Node* createList() 
{
	Node* headNode = new Node;
	headNode->next = nullptr;
	return headNode;
}
struct Node* createNode(int data) 
{
	Node* newNode = new Node;
	newNode->data = data;
	newNode->next = nullptr;
	return newNode;
}
void insertData(Node* headNode, int data) 
{
	Node* newNode = createNode(data);
	newNode->next = headNode->next;
	headNode->next = newNode;
}
void printList(Node* headNode) 
{
	Node* pMove = headNode->next;
	while (pMove != nullptr) 
	{
		cout << pMove->data<<" ";
		pMove = pMove->next;
	}
	cout << endl;
}
void testListC() 
{
	Node* list = createList();
	insertData(list, 10);
	insertData(list, 20);
	printList(list);
}
#endif
 
#if 0
struct Node 
{
	int data;
	Node* next;
};
class List 
{
public:
	void createList() 
	{
		headNode = new Node;
		headNode->next = nullptr;
	}
	void insertData(int data) 
	{
		Node* newNode = new Node;
		newNode->data = data;
		newNode->next = nullptr;
 
		newNode->next = headNode->next;
		headNode->next = newNode;
	}
	void printList() 
	{
		Node* pMove = headNode->next;
		while (pMove != nullptr) 
		{
			cout << pMove->data << " ";
			pMove = pMove->next;
		}
		cout << endl;
	}
protected:
	Node* headNode;		//用一個指針表示整個表頭
};
void testList1()
{
	List* pList = new List;		//C++第一步:創(chuàng)建對象
	pList->insertData(10);
	pList->insertData(20);
	pList->printList();
}
#endif 
class Node 
{
public:
	Node*& getNext() 
	{
		return next;
	}
	int& getData() 
	{
		return data;
	}
protected:
	int data;
	Node* next;
};
class List 
{
public:
	void createList() 
	{
		headNode = new Node;
		headNode->getNext() = nullptr;
	}
	void insertData(int data) 
	{
		Node* newNode = new Node;
		newNode->getNext() = nullptr;
		newNode->getData() = data;
 
		newNode->getNext() = headNode->getNext();
		headNode->getNext() = newNode;
	}
	void printList() 
	{
		Node* pMove = headNode->getNext();
		while (pMove != nullptr) 
		{
			cout << pMove->getData() << "\t";
			pMove = pMove->getNext();
		}
		cout << endl;
	}
protected:
	Node* headNode;
};
void testList2()
{
	//List list;
    //list.insertList(10);
    List* pList = new List;		//C++第一步:創(chuàng)建對象
	pList->createList();
	pList->insertData(10);
	pList->insertData(20);
	pList->printList();
}
int main() 
{
	//testListC();
	testList2();
	return 0;
}

總結(jié)

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

相關(guān)文章

  • C語言實現(xiàn)代碼雨效果

    C語言實現(xiàn)代碼雨效果

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)代碼雨效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • 統(tǒng)計C語言二叉樹中葉子結(jié)點個數(shù)

    統(tǒng)計C語言二叉樹中葉子結(jié)點個數(shù)

    這篇文章主要介紹的是統(tǒng)計C語言二叉樹中葉子結(jié)點個數(shù),文章以C語言二叉樹中葉子結(jié)點為基礎(chǔ)分享一個簡單小栗子講解,具有一定的知識參考價值,需要的小伙伴可以參考一下
    2022-02-02
  • windows消息和消息隊列實例詳解

    windows消息和消息隊列實例詳解

    這篇文章主要介紹了windows消息和消息隊列實例詳解,詳細講述了Windows的消息機制與原理,對于深入理解和學(xué)習(xí)Windows應(yīng)用程序設(shè)計有不錯的借鑒價值,需要的朋友可以參考下
    2014-10-10
  • C++ Struct結(jié)構(gòu)體用法淺析

    C++ Struct結(jié)構(gòu)體用法淺析

    前邊我們所定義的類,均是使用struct關(guān)鍵字來定義,但是C++中真正用于定義類的關(guān)鍵字為class,因為要C++兼容C,所以保留struct關(guān)鍵字,struct與class的用法完全相同
    2023-03-03
  • 解析C++ 浮點數(shù)的格式化顯示

    解析C++ 浮點數(shù)的格式化顯示

    本篇文章是對C++中浮點數(shù)的格式化顯示進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • 淺析C語言初階的常量和變量

    淺析C語言初階的常量和變量

    在C程序執(zhí)行過程中,其值不發(fā)生改變的量稱為常量,其值可變的量稱為變量,本文將帶你了解什么是常量和變量,以及使用方法,需要的朋友可以參考下
    2023-05-05
  • C++ 靜態(tài)成員的類內(nèi)初始化詳解及實例代碼

    C++ 靜態(tài)成員的類內(nèi)初始化詳解及實例代碼

    這篇文章主要介紹了C++ 靜態(tài)成員的類內(nèi)初始化詳解及實例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • C語言中條件編譯詳解

    C語言中條件編譯詳解

    預(yù)處理程序提供了條件編譯的功能??梢园床煌臈l件去編譯不同的程序部分,因而產(chǎn)生不同的目標(biāo)代碼文件。這對于程序的移植和調(diào)試是很有用的。條件編譯有三種形式,下面分別介紹。
    2017-05-05
  • VC創(chuàng)建圓角dialog的實現(xiàn)方法

    VC創(chuàng)建圓角dialog的實現(xiàn)方法

    這篇文章主要介紹了VC創(chuàng)建圓角dialog的實現(xiàn)方法,結(jié)合實例形式分析了圓角dialog對話框的創(chuàng)建步驟與相關(guān)操作技巧,需要的朋友可以參考下
    2016-08-08
  • C++歸并算法實例

    C++歸并算法實例

    這篇文章主要介紹了C++歸并算法,實例分析了C++實現(xiàn)基于歸并算法合并線性表的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07

最新評論

德化县| 荣成市| 海晏县| 东港市| 遂宁市| 毕节市| 长沙县| 淮北市| 罗田县| 休宁县| 晋中市| 那曲县| 晋州市| 洪雅县| 营山县| 南乐县| 柳林县| 林周县| 铁岭县| 岗巴县| 长寿区| 安福县| 左贡县| 唐河县| 类乌齐县| 武冈市| 同江市| 龙井市| 辉县市| 宝应县| 赤城县| 定陶县| 舞阳县| 衡南县| 平安县| 新源县| 新昌县| 新宾| 宁陵县| 玉林市| 始兴县|