1. 程式人生 > >C++學習筆記基礎(1)

C++學習筆記基礎(1)

1,C++與C最大的區別

以前學過一些c語言,現在開始學習C++,我感覺最大的區別就是c++多了一個class的關鍵詞,也就使得c++成為了面向物件的語言,而c語言是面向過程的語言。面向物件的三大特性:封裝,繼承,和多型

封裝:主要是利用class裡面的訪問級別關鍵字,有public,private和protect。private和protect就能能夠將資料封裝起來。不被外界訪問,public裡面主要用來宣告成員函式,因為我們就是構造一個物件主要就是想用裡面的方法,所以一般的成員函式則寫在public裡面。

繼承:繼承就是定義新類的時候繼承舊類,他不僅有新定義的成員和方法,還有舊的方法和成員。彼此成為基類和派生類。

多型:c++中多型主要體現在virtual上。使用virtual修飾的成員函式叫做虛成員函式,虛成員函式在派生類和基類中可以有不同的作用,這時物件在呼叫該成員函式時是通過動態繫結的方式選擇使用基類的方法還是派生類方法。動態繫結是在編譯的時候才確定的。

2,建構函式和解構函式

對於每個類而言,要麼自己定義一個建構函式,要麼系統預設加上一個無參的建構函式。在定義建構函式時要養成使用初始化列表的方法:

person (string my_sex = male, int my_age = 0):sex(my_sex),age(my_age) {}

sex和age為類成員。

解構函式,對於不含指標的類可以不用寫解構函式。否則就要寫,因為如果成員變數為指標,也就是在堆中申請了記憶體,我們就要手動寫解構函式,在函式結束時釋放記憶體。如要使用基類對派生類的物件進行操作,解構函式也最好寫成虛擬函式,這樣能夠在析構的時候防止只析構基類而不析構派生類。

3,構造一個類時應該注意的幾點問題:

1:寫建構函式時應該儘量使用初始化列表

2:一般情況下將成員資料放在private裡面,成員函式放在public裡面

3:在寫成員函式時考慮時候使用const修飾詞,主要分三部分,const修飾函式引數(主要是看該引數是否為只讀引數);const修飾引數返回值(一般在指標傳遞中使用,表明指標的內容不能被修改。函式返回值只能被賦予const修飾的同類型指標);const修飾成員函式(該成員函式不會修改任何的資料成員)

4:pass by value 和 pass by reference,在傳遞引數時,儘量使用傳遞引用,在不改變實參情況下一般都傳遞引用。函式返回時也儘量傳遞引用,前提是能夠傳遞引用的情況下。例:

int& operate += (const int&) 像這個返回值可以使用引用。i1 += i2;變數 i1, i2都存在。返回值就直接存在i1中

int operate + (const int& , const int&) 像這種就不能返回引用,因為該操作符是i1 + i2 返回值存在一個新的申請的記憶體中,如果使用傳遞引用的方式,一旦該操作結束,申請的新的記憶體就會被釋放掉(因為是區域性變數,是系統在棧中自動申請的一塊記憶體)。

5:對於只有幾行的簡單程式碼,儘量使用inline函式。行內函數能夠大大減少函式呼叫的時間。

6:操作符過載既可以為成員函式,也可以為非成員函式。但是對於 << 來說只能過載為全域性函式。因為是作用在cout這個物件上的。cin同理。

可以參考stl中複數的原始碼進行剖析。

相關推薦

C++學習筆記基礎1

1,C++與C最大的區別 以前學過一些c語言,現在開始學習C++,我感覺最大的區別就是c++多了一個class的關鍵詞,也就使得c++成為了面向物件的語言,而c語言是面向過程的語言。面向物件的三大特性:封裝,繼承,和多型。 封裝:主要是利用class裡面的訪問級別關鍵字,有

C++基礎教程面向物件學習筆記51

建構函式初始化列表 在上一課中的學習過程中,為簡單起見,我們使用賦值運算子在建構函式中初始化了類成員資料。例如: class Something { private: int m_value1; double m_value2; char

web前端學習JavaScript學習筆記部分1-- JavaScript基礎教程

1、JavaScript基礎教程 1.1、Javascript基礎-介紹、實現、輸出 1.1.1、JavaScript是網際網路上最流行的指令碼語言,這門語言可用於web和HTML,更可廣泛用於服務端、pc端、移動端。 1.1.2、JavaScript指令碼語言   JavaScript是一種輕量級的

Pro Android學習筆記 ActionBar1:Home圖標區

ces tom 新的 方便 find rac vertica lba manifest ?? Pro Android學習筆記(四八):ActionBar(1):Home圖標區 2013年03月10日 ? 綜合 ? 共 3256字 ? 字號 小 中 大 ? 評論關閉

《機器學習-西瓜書》-周志華-學習筆記系列1--序言、前言和主要符號表

寫在前面的話: 自己於今天(2018年9月4日)看完了機器學習-西瓜書-周志華-清華大學出版社書籍,對於這本書的評價就是:好書,自己可以在每一個字裡行間感受到作者的用心,每當看到一個不懂的名詞的時候,作者都會用通俗的例子來講解,遇到公式的時候,也會進行推導,側邊欄的一些說明資訊往往能帶給自己

Vue學習筆記重點1

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>todo-list元件版</title> <script

c++學習筆記小記16

區域性物件 自動物件:只存在於塊執行期間的物件稱為自動物件 區域性靜態物件:區域性靜態物件在程式執行路徑第一次經過物件定義語句時初始化,並且直到程式終止時才被銷燬,在此期間即使物件所在的函式結束執行也不會影響對它的影響 引數傳遞 1. 傳值引數 當初始化一個非引用型

Groovy語言學習--語法基礎1

2018年11月末,從上家公司離職後進入現在的公司。進入專案以來,發現專案中有很多groovy指令碼,以前沒接觸過groovy,抽時間系統地學一下,也方便後期專案的開發和維護。 groovy和java的淵源以及和規則引擎的比較,作為白板目前還沒評論的資格,學語言當然還是直接擼程式碼來得實在。好在和java同

MongoDB學習筆記1MongoDB在Win10下的安裝及配置

1. 下載 下載連結: https://www.mongodb.com/download-center?jmp=nav#community   2. 安裝 3. 配置 1. 安裝完的目錄結構 [C:\Program Fil

python學習筆記總結1

一.python中的幾種資料型別: 1 Number(數字) 包括int,long,float,complex 2 String(字串) 3 List(列表) 4 Dictionary(字典) 5 Tuple(元組) 6 Bool(布林) 包括True

數字語音訊號處理學習筆記——緒論1

版權宣告:本文為博主原創文章,未經博主允許不得轉載。    https://blog.csdn.net/u013538664/article/details/25043707 1.緒論 1.1概述 語言是人類交換資訊最方便、最快捷的一種方式,在高度發達的資訊社會

周志華《Machine Learning》 學習筆記系列1

機器學習是目前資訊科技中最激動人心的方向之一,其應用已經深入到生活的各個層面且與普通人的日常生活密切相關。本文為清華大學最新出版的《機器學習》教材的Learning Notes,書作者是南京大學周志華教授,多個大陸首位彰顯其學術奢華。本篇主要介紹了該教材前兩個章

Unity3D學習筆記————GUI1

using System.Collections; using System.Collections.Generic; using UnityEngine; public class GUItest2 : MonoBehaviour { float value; p

UE4 C++ 網路聯機基礎1

若要允許當前Actor可以被伺服器複製: SetReplicates(true); 若要允許當前Actor可以被伺服器複製移動: SetReplicatesMovement(true); 客戶端若要通知伺服器呼叫函式: 函式紅引數為UFUNCTION(Ser

Python學習筆記-概述1

⑴Python的特點:        ①面向過程、面向物件;②語法簡單、易學易用;③跨平臺(java  .net)、具有可移植性;④模板豐富、功能強大;⑤具有很好的擴充套件性 ⑵搭配開發環境         ① 開發環境:Windows、Linux/UNIX、Mac OS

【spark 學習筆記】Spark學習筆記精華1

好記性不如爛筆頭,順便就開始用手機練習打字了,也分享給感興趣的朋友學習下。 1.take可以檢視RDD中前面幾個元素,而且代價很小。 rdd.take(5) 2.可以用takeSample對資料

C++基礎教程面向物件學習筆記52

非靜態成員初始化 在編寫具有多個建構函式的類(大多數建構函式)時,必須為每個建構函式中的所有成員指定預設值會導致冗餘程式碼。如果更新成員的預設值,則需要觸控每個建構函式。 從C ++ 11開始,可以直接為普通類成員變數(不使用static關鍵字的變數)提供預設初

C++基礎的不能再基礎學習筆記——類

類 一、類成員再探 1. 自定義類型別名 在類中,我們可以為資料型別定義別名而使程式碼更清晰簡潔。 class Screen { public: typedef string::size_type pos; //pos是strin

C#基礎1

文檔 使用 忽略大小寫 read fault else ogr subst itop 摘要:學習c#已經有一段歷程了,回顧之前所打過的代碼以及筆記,做些常用的總結,希望以後工作中如果用到,方便查找。當然,個人首要目的是這樣,加深印象的同時,可以練習一下打字速

數據結構基礎1--數組C語言實現--動態內存分配

ins post cli itl ini sem pri 應該 insert 數據結構基礎(1)--數組C語言實現--動態內存分配 基本思想:數組是最常用的數據結構,在內存中連續存儲,可以靜態初始化(int a[2]={1,2}),可以動態初始化 malloc()。