C++学习之路(一)
第一章:C++語言概述
前言:這里學習C++教材是選用的清華大學出版社的《C++語言基礎教程》第二版,該版本語言較為通俗易懂,概念清晰,便于理解。因為之前學習過C語言,因此在學習本書之際,也是抱著一遍復習c語言,一遍深入學習C++原理,重點將“指針”、“面向對象”、“類和對象”、“繼承性和派生類”、“多態性和虛函數”等概念深入理解,并多做習題鞏固,多上機編程,提升代碼能力。
同時配套的慕課有:學堂在線平臺 清華大學 鄭莉教授 C++語言程序設計基礎(2021秋)
1.1 C++語言是一種面向對象的程序設計語言
什么是面向對象?面向對象與面向過程有何區別?
首先,我們先了解對象的概念,對象是軟件系統的基本構成單位,對象是對客觀世界中實際存在的某種事物的抽象,即:描述客觀事物的一個實體。對象是一組屬性和一組行為的集合,屬性用來描述對象的靜態特性,用若干數據表示;行為則描述對象動態特性,用若干操作表示,即數據與操作的集合。
而面向對象總體來講則是:運用一些新概念和新方法構造系統的軟件開發方法,這些新概念包括對象、類、封裝、聚合、繼承、多態性等,這些也體現了面向對象的特點。
面向過程:即以過程為中心的編程思想,主要的特點是模塊化編程,比如:小明起床去學校,可以分解為四步流程:(1)起床 (2)穿衣 (3)洗臉刷牙 (4)去學校
面向對象則是將每個元素抽象成對象,對象有自己的屬性,關注對象的行為,而并非這個事件。
同時面向對象有多種新概念,新方法需要理解:
1.類:類是一種類型,是對具有相同屬性對象的描述,類是創建對象的樣板,包含著所創建對象的數據描述和操作定義,類是一種具有共同屬性、行為的若干對象的統一描述體。
分類是其主要特點。
2.封裝:即將對象的屬性和行為結合為一個封裝體,其中,屬性由若干不同類型數據組成,對象的行為由若干操作組成。操作是通過函數實現,又稱為方法。
3.聚合:聚合是類之間的一種包含關系,一個復雜類可以由若干簡單的對象組成,其中的方法成為聚合。例如:描述一架飛機,可以將飛機拆分為機翼、機身、機尾、發動機等多干部位。
4.繼承:是創建新類的一種方法,繼承用來解決一般類和特殊類的關系,其中,特殊類具有一般類的屬性和行為,并且它還有自己特殊的屬性和行為,這時稱特殊類是對一般類的繼承。
在軟件開發中,可將已經開發好的類存放到類庫內,開發新系統時,便可直接使用或繼承使用已有的類。繼承可以減少冗余性,提高重用性。減少編程工作量,提高編程質量。
5.多態性:即一對多的狀態,一個函數名或同一個運算符對應于不同的實現或功能。
綜上所述:面向對象的方法歸納以下幾點:
(1):將客觀事物中抽象出的數據和方法構成一個集合體,便是對象。
(2):將相同類型中對象抽象出共性,形成類。類具有封裝性和隱藏性。
(3):類是一個封裝體,類中多數數據只能通過本類的方法進行處理,這些數據在類外不可見,無法訪問。
(4):類是通過外部接口與外界進行發生關系,這些外部接口提供了類的行為。
(5):對象之間通過消息進行通信。
1.2 C++語言對面向對象程序設計方法的支持
1.C++支持數據封裝
2.C++語言的類中包含私有、公有和保護成員
3.C++語言中通過發送消息處理對象
4.C++語言中允許友元破壞封裝性
5.C++語言允許函數名和運算符重載
6.C++語言支持繼承性
7.C++語言支持動態聯編
C++語言與C語言差別在于:C++語言是面向對象,而C語言是面向過程,C++語言在對C語言改進的基礎上,又增添了支持面向對象的新內容。
1.3 C++語言的詞法和詞法規則
1.C++語言字符集
2.單詞及詞法規則
(標識符、關鍵字、運算符、分隔符、常量、注釋符)
注:存放在內存中的字符串常量最后有一個結束符,即空字符,它用轉義序列方法表示:‘\0’
1.4 C++語言程序結構特點
與C語言結構有部分不同,例如提取符:“>>”,插入符:“<<”,輸入輸出:cin>>(變量1)>>(變量名2)…;
輸出操作:cout<<(表達式1)<<(表達式2)…;
下面展示C++語言的一個示范程序:
#include<iostream> #include<cstdlib> int main() {double x,y;std::cout<<"Enter two float numbers:";std::cin>>x>>y;double z=x+y;std::cout<<"x+y="<<z<<std::endl; system("pause") ;return 0;}運行程序,輸入7.2 9.3 換行得到結果:x+y=16.5
如下圖:
注:編譯軟件為dev c++ 或 visual c++
總結
以上是生活随笔為你收集整理的C++学习之路(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PyTorch框架学习十——基础网络层(
- 下一篇: Opencv和C++实现canny边缘检