C++中對類和對象基礎理解

C++中對類和對象基礎理解


C++不是純面向對象的編程語言,而是基於面向對象的語言,因爲C++中包含C語言的部分,而C語言是面向過程的。

面向對象的三大特性:封裝、繼承、多態

封裝:將方法和數據封裝在類裏面,可以根據訪問限定符的使用保證數據的安全性,隱藏了方法的實現細節,也方便使用。


繼承:對已有類增加屬性和功能或進行部分修改來建立新的類,是實現代碼的複用的重要手段,繼承是類型之間的關係建模。

多態:在面向對象的程序裏面,同一個消息被不同的對象接受後可以導致不同的行爲,是接口的多種不同的實現方式。

這裏先介紹類的重載性部分。


訪問限定符解釋

      (1)public成員可以直接從類外部訪問,private/protected成員不可以從類外部直接訪問。

      (2)每個限定符在類中可以使用多次,一個限定符的作用域是下一個訪問限定符或類結束前。

      (3)類裏面如果沒有多成員指定訪問限定符,則默認爲私有的。

下面我們引入一個簡單類的例子加深理解


其中成員函數也可以在類內部聲明,在類外部定義。

class Student
{
public:
	void Display();
private:
	char* _name;
	char* _sex;
	int _num;
};

void Student::Display()
{
	cout << "姓名:" << _name << endl;
	cout << "性別:" << _sex << endl;
	cout << "學號:" << _num << endl;
}


類的實例化對象(爲了方便舉例,這裏將成員變量定義爲公有的)

void Test()
{
	Student s;
	s._name = "小紅";
	s._sex = "女";
	s._num = 01;
	s.Display();
}
類只是一個模型一樣的東西,只想定了該類中有哪些成員,定義出一個類並沒有分配實際的內存空間,類就像現實生活中建築設計中的圖紙,只需要設計出需要些什麼東西,真正佔用空間,能實際存儲數據的是實例化出的對象。


類的存儲對象模型


一個對象的大小等於類中所有成員變量的大小之和(遵循內存對其規則),空類的大小爲1


類的六個默認成員函數



下面直接用日期類的例子解釋這前四個常用的默認成員函數

class Date
{
public:
	Date(int year, int month, int day)//構造函數
	{
		_year = year;
		_month = month;
		_day = day;
	}

	Date(const Date& d)//拷貝構造函數
	{
		_year = d._year;
		_month = d._month;
		_day = d._day;
	}

	Date& operator = (const Date& d)//賦值運算符重載
	{
		if (this != &d)
		{
			this->_year = d._year;
			this->_month = d._month;
			this->_day = d._day;
		}
		return *this;
	}

	~Date()//析構函數
	{
		cout << " ~Date() " << endl;
	}

private:
	int _year;
	int _month;
	int _day;
};





發佈了38 篇原創文章 · 獲贊 21 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章