C++:初識類和物件
類和物件
面向物件
面向物件程式設計:面向物件程式設計是一種程式設計範性,同時也是一種程式開發的方法。
物件:指的是類的例項,將物件作為程式的基本單元,將程式和資料封裝在其中,以提高軟體的重要性,靈活性和擴充套件性。
c++不是純面嚮物件語言,而是基於面向物件的語言,因為包含c的部分,c是面向過程。
面向物件的三大特性:
- 繼承
- 多型
- 封裝
定義一個類:
class Person
{
public:
//資料--成員函式
void show()
{
cout<<name<<endl;
cout <<age<<endl;
}
public:
//資料--成員變數
char* name;
int age;
};
int main()
{
Person p;//類的例項化
p.name = "Tom";
p.age = 6;
p.show();
Person* Ptr=&p;
Ptr->name="mary";
Ptr->age=12;
Ptr->show();
}
三種訪問限定符
- public 公有
- protected 保護
private 私有
- public成員可從類外部直接訪問,private/protected成員不能從類外部直接訪問。
- 每個限定符在類體中可使用多次,它的作用域是從該限定符出現到下一個限定符之前或類體結束前。
- 類體中如果沒有定義限定符,則預設為私有的。
- 類的訪問限定符體現了面向物件的封裝性。
作用域:
類的作用域:
- 每個類都定義了自己的作用域,類的成員都在這個類的作用域中,成員函式內可任意訪問成員函式和成員變數
- 物件可以直接訪問公有成員,也可以通過指向物件的指標通過->訪問物件的公有成員。
- 在類體外定義成員,需要使用 ::作用域解析符指明成員屬於哪個類域。
成員函式的宣告和定義
類內定義成員函式
class Person
{
public:
void Show()
{
cout<<_name<<_sex<<_age<<endl;
}
public:
char* _name;
char* _sex;
int _age;
};
類外定義成員函式
class Person
{
public:
void Show();
public:
char* _name;
char* _sex;
int _age;
};
void Person::Show()
{
cout<<_name<<_sex<<_age<<endl;
}
類物件模型大小
每個物件的大小為類中所有成員變數的大小之和,但是也要遵循記憶體對齊原則
成員函式不佔大小。
記憶體對齊問題:
複習知識點-記憶體對齊規則:
第一個成員在結構體變數偏移量為0的地址處對齊
其他成員都要對齊到某個對齊數的整數倍的地址處
對齊數=min(編譯器預設對齊數,該成員大小)
結構體大小為最大對齊數的整數倍
巢狀結構體的情況:巢狀的結構體對齊到自己的最大對齊數的整數倍處,結構體的整體大小就是所有最大對齊數的整數倍
為什麼記憶體對齊:
- 平臺原因(移植原因): 不是所有的硬體平臺都能訪問任意地址上的任意資料的;某些硬體平臺只能在某些地址處取某些特定型別的資料,否則丟擲硬體異常。
- 效能原因: 資料結構(尤其是棧)應該儘可能地在自然邊界上對齊。 原因在於,為了訪問未對⻬的記憶體,處理器需要作兩次記憶體訪問;⽽對齊的記憶體訪問僅需要 一次訪問。
總體來說:
結構體的記憶體對齊是拿空間來換取時間的做法。
那在設計結構體的時候,我們既要滿⾜對齊,⼜要節省空間,如何做到:
讓佔用空間⼩的成員儘量量集中在一起。
空類的大小?
一個位元組,為了佔位,表示它存在過。
相關推薦
C++:初識類和物件
類和物件 面向物件 面向物件程式設計:面向物件程式設計是一種程式設計範性,同時也是一種程式開發的方法。 物件:指的是類的例項,將物件作為程式的基本單元,將程式和資料封裝在其中,以提高軟體的重要性,靈活性和擴充套件性。 c++不是純面嚮物件語言,而是基
C++中的類和物件(一)
https://www.cnblogs.com/metalsteel/p/6266505.html 一,類的概念及封裝 1.什麼是封裝 第一層含義:封裝是面向物件程式設計最基本的特性。把資料(屬性)和函式(方法)合成一個整體,這在計算機世界中是用類和物件實現的。(把屬性和方法進行封
【C++初學】類和物件定義與建構函式
一.類和物件定義 class 型別名 { public: 公有成員(外部介面) private: 私有成員(只允許類內函式訪問,有後續操作) protected: 保護成員 二.建構函式 def:給物件進行初始化的函式。 gra: 函式名與類名相同; 無返回值(return); 1.委託
c++基礎2——類和物件
1、class的構成 class 類名{ public://公有成員 函式1; 變數1; ……
【C++】初學類和物件的概念
C++中的類Class可以看作C語言中結構體的升級版。結構體是一種構造型別,它可以包含若干成員變數,而其中每個成員變數的型別又可以不同。例如: struct Student {//結構體包含的成員變數 char *name; int age; float score; }; void D
Beginng_Java7(譯):發現類和物件(第二章3.4.5節)(完)
多型 一些現實世界的實體可以改變他們的形式。 例如,水(在地球上而不是星際空間)自然是液體,但在冷凍時會變成固體,在加熱到沸點時會變成氣體。 諸如經歷變態的蝴蝶之類的昆蟲是另一個例子。 改變形式的能力被稱為多型,並且對於在程式語言中建模是有用的。 例如,通過引入
C++實驗2-類和物件1
一、問題及程式碼 /* * 檔名稱: C++ * 作 者: 尚超 * 完成日期:2016年3月11日 * 版 本 號:v1.0 * 對任務及求解方法的描述部分: * 輸入描述: * 問題描述: 輸入任意三個數,按從小到大輸出 * 程式輸出: * 問題分
C++實驗3_3 類和物件(3)
五、實驗結果及分析 1. 構造了一個CPU! CPU開始執行! CPU停止執行! 析構了一個CPU! 3. #include <iostream.h> enum CPU_Rank {P1=1,P2,P3,P4,P5,P6,P7
C++學習筆記——類和物件(二)
設計一個類就是設計一個新的型別,應該考慮: 此型別的“合法值”是什麼? 此型別應該有什麼樣的函式和操作符? 新型別的物件該如何被建立和銷燬? 如何進行物件的初始化和賦值? 物件作為函式的引數如何以值傳遞? 誰將使用此型別的物件成員? 類定義的語法形式: clas
C++中的類和物件
一、類和物件的關係 每一個實體都是物件。有一些物件是具有相同的結構和特性的。每個物件都屬於一個特定的型別。在C++中物件的型別稱為類(class )。類代表了某一批物件的共性和特徵。前面已說明:類是物件的抽象,而物件是類的具體例項(instance)。正如同結構
C++初識:類和物件(2)
在之前的文章裡,我們出初步瞭解了,什麼是類,類如何定義,類的大小怎麼計算等 一個空類裡面什麼也沒有,但是它並非是什麼也沒有,只要是類,它就有6個預設的成員函式: 1.建構函式 2.解構函式 3.拷貝建構函式 4.賦值操作符過載 5.取地址操作符過載 6.co
初識c#---類和物件
1.類 定義:類是描述具有相同特徵與行為的事物的抽象,類內部包含類的特徵和類的行為 特徵: 在類中的表現形式為欄位 欄位:訪問修飾符 + 資料型別 + 欄位名; 欄位的預設修飾符為private 類的預設修飾符為in
C++學習筆記(二):類和物件
類是物件共性的抽象,一種自定義的資料型別,可認為是C語言中結構體的拓展。它的作用是將資料和演算法(資料操作)封裝在使用者自定義的抽象資料型別中。 為什麼要在C++中新增類這樣一種“工具“呢? 程式中的每一組資料都是為某一種操作而準備的。而資料的交叉使用容易導致資料被誤操作,
初識C++: 類和物件(1)
類和物件的初步認識: 類是物件的抽象,物件是類的具體例項。因為類是抽象的,所以類不佔用記憶體,而物件是具體的,佔用儲存空間。 我們都知道,C語言時面向過程的語言,它關注的是過程中的資料與方法。 C++是面向物件的語言,它關注的是物件的屬性與功能 用一張圖來理解類和物件
【轉】C#中的兩把雙刃劍:抽象類和接口
實例 可維護 對象 為什麽不使用 程序 一定的 代碼 方式 索引 轉:http://www.cnblogs.com/djzxjblogs/p/7587735.html 第一次面試的時候, 面試官問我,抽象類和接口的區別。 本人也是,按照面試寶典上的回答,說了一大堆。
面向物件【day07】:新式類和經典類(八)
本節內容 1、概述 2、類的多繼承 3、經典類VS新式類 4、總結 一、概述 在python還支援多繼承,但是一般我們很少用,有些語言乾脆就不支援多繼承,有多繼承,就會帶來兩個概念,經典類和新式類,下面我就來學學什麼是多繼承,什麼是經典類和新式類? 二、類的多繼承 2.1 多繼承
C++類和物件(下篇)
1. 再談建構函式 2. static成員 3.C++11的成員初始化新玩法 4. 友元 5.內部類 6. 再次理解封裝 1. 再談建構函式 1.1建構函式體賦值 在建立物件時,編譯器通過呼叫建構函式,給物件中各個成員變數一個合適的初始值
C++學習筆記 (二) ---- 類和物件
①、類和物件 類的定義,如下: class Student{ public: //成員變數 char *name; int age; float score; //成員函式 void say(){ cout<<
C++類和物件.四個預設成員函式(賦值運算子過載)
1.(1)類的定義 類就是具有相同資料和相同操作的一組物件的集合。 學生類定義: class student {//成員變數char* name;int age;int sex;//成員函式void speak(){cout<<name<<"年
Java基礎 實驗二:類和物件
1.實驗目的 掌握類的宣告、物件的建立、方法的定義和呼叫、建構函式的使用。 2.實驗內容 1)定義一個表示學生資訊的類Student,要求如下: ① 類Student的成員變數: sNO 表示學號;