c++面向對象總結

c++面向對象總結

  • 什么是面向對象?面向對象的三大特性
  • 重寫和重載的區別
  • 隱藏和重寫,重載的區別
  • 什么是多態?多態如何實現

什么是面向對象?面向對象的三大特性

面向對象:對象是指具體的某一個事物,這些事物的抽象就是類,類中包含數據(成員變量)和動作(成員方法)。
面向對象的三大特性:

  • 封裝:將具體的實現過程和數據封裝成一個函數,只能通過接口進行訪問,降低耦合性。
  • 繼承:子類繼承父類的特征和行為,子類有父類的非 private 方法或成員變量,子類可以對父類的方法進行重寫,增強了類之間的耦合性,但是當父類中的成員變量、成員函數或者類本身被 final 關鍵字修飾時,修飾的類不能繼承,修飾的成員不能重寫或修改。
  • 多態:多態就是不同繼承類的對象,對同一消息做出不同的響應,基類的指針指向或綁定到派生類的對象,使得基類指針呈現不同的表現方式。

重寫和重載的區別

范圍區別:對于類中函數的重載或者重寫而言,重載發生在同一個類的內部,重寫發生在不同的類之間(子類和父類之間)。
參數區別:重載的函數需要與原函數有相同的函數名、不同的參數列表,不關注函數的返回值類型;重寫的函數的函數名、參數列表和返回值類型都需要和原函數相同,父類中被重寫的函數需要有 virtual 修飾。
virtual 關鍵字:重寫的函數基類中必須有 virtual關鍵字的修飾,重載的函數可以有 virtual 關鍵字的修飾也可以沒有。

隱藏和重寫,重載的區別

范圍區別:隱藏與重載范圍不同,隱藏發生在不同類中。
參數區別:隱藏函數和被隱藏函數參數列表可以相同,也可以不同,但函數名一定相同;當參數不同時,無論基類中的函數是否被 virtual 修飾,基類函數都是被隱藏,而不是重寫。

什么是多態?多態如何實現

多態:多態就是不同繼承類的對象,對同一消息做出不同的響應,基類的指針指向或綁定到派生類的對象,使得基類指針呈現不同的表現方式。在基類的函數前加上 virtual 關鍵字,在派生類中重寫該函數,運行時將會根據對象的實際類型來調用相應的函數。如果對象類型是派生類,就調用派生類的函數;如果對象類型是基類,就調用基類的函數。

實現方法:多態是通過虛函數實現的,虛函數的地址保存在虛函數表中,虛函數表的地址保存在含有虛函數的類的實例對象的內存空間中。

實現過程:在類中用 virtual 關鍵字聲明的函數叫做虛函數;
存在虛函數的類都有一個虛函數表,當創建一個該類的對象時,該對象有一個指向虛函數表的虛表指針(虛函數表和類對應的,虛表指針是和對象對應);
當基類指針指向派生類對象,基類指針調用虛函數時,基類指針指向派生類的虛表指針,由于該虛表指針指向派生類虛函數表,通過遍歷虛表,尋找相應的虛函數。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/384329.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/384329.shtml
英文地址,請注明出處:http://en.pswp.cn/news/384329.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

類模板static成員的使用

轉載:http://blog.csdn.net/ljq32/article/details/7911390 1. 與普通類的static成員一樣,類內部聲明一次,類外部定義一次,定義時可以設置也可以不設置初始值; 2. 類模板內部聲明與普通類的static成員一致: [html] vi…

Linux網絡編程服務器模型選擇之循環服務器

轉載:http://www.cnblogs.com/lizhenghn/p/3617608.html 在網絡程序里面,通常都是一個服務器處理多個客戶機,為了出個多個客戶機的請求,服務器端的程序有不同的處理方式。本節開始介紹Linux下套接字編程的服務器模型選擇&#xff…

劍指Offer04. 二維數組中的查找

在一個 n * m 的二維數組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個高效的函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。 相當于二叉搜索樹,左孩子比根節點小&…

Linux網絡編程服務器模型選擇之并發服務器(上)

轉載:http://www.cnblogs.com/lizhenghn/p/3617666.html 與循環服務器的串行處理不同,并發服務器對服務請求并發處理。循環服務器只能夠一個一個的處理客戶端的請求,顯然效率很低。并發服務器通過建立多個子進程來實現對請求的并發處理。并發…

劍指Offer10- II. 青蛙跳臺階問題

一只青蛙一次可以跳上1級臺階,也可以跳上2級臺階。求該青蛙跳上一個 n 級的臺階總共有多少種跳法。 答案需要取模 1e97(1000000007),如計算初始結果為:1000000008,請返回 1。 示例 1: 輸入&a…

Linux網絡編程服務器模型選擇之并發服務器(下)

轉載:http://www.cnblogs.com/lizhenghn/p/3618986.html 前面兩篇文章(參見)分別介紹了循環服務器和簡單的并發服務器網絡模型,我們已經知道循環服務器模型效率較低,同一時刻只能為一個客戶端提供服務,而且…

劍指Offer05. 替換空格

請實現一個函數,把字符串 s 中的每個空格替換成"%20"。 示例 1: 輸入:s “We are happy.” 輸出:“We%20are%20happy.” class Solution { public:string replaceSpace(string s) {int count0;int lens.size();stri…

Linux網絡編程服務器模型選擇之IO復用循環并發服務器

轉載:http://www.cnblogs.com/lizhenghn/p/3619091.html 在前面我們介紹了循環服務器,并發服務器模型。簡單的循環服務器每次只能處理一個請求,即處理的請求是串行的,效率過低;并發服務器可以通過創建多個進程或者是線…

數據結構(六)二叉樹的遍歷(遞歸非遞歸方法)

數據結構(六)二叉樹的遍歷(遞歸非遞歸方法) 一、遞歸方法 1.先序遍歷 void PreOrder(BiTree T) {visit(T);PreOrder(T->LChild)PreOrder(T->RChild) }2.先序遍歷 void PreOrder(BiTree T) {PreOrder(T->LChild)visit…

memcpy/memset函數的c語言實現

轉載&#xff1a;http://blog.csdn.net/u011118276/article/details/46742341 1、memcpy 頭文件&#xff1a;#include <string.h> 函數原型&#xff1a;void *memcpy(void *dest, const void *src, size_t n) 功能&#xff1a;將指針src指向的內存空間的n個字節復制到des…

計算機網絡(一)計算機網絡體系

計算機網絡&#xff08;一&#xff09;計算機網絡體系一、計算機網絡概述概念功能組成分類二、體系結構和參考模型ISO/OSI模型物理層網絡層傳輸層會話層表示層應用層OSI參考模型與TCP/IP參考模型OSI參考模型與TCP/IP參考模型不同5層參考模型一、計算機網絡概述 概念 計算機網…

計算機網絡(二)物理層

計算機網絡&#xff08;二&#xff09;物理層一、通信基礎物理層接口特性1.機械特性2.電氣特性3.功能特性4.規程特性典型的數據通信模型三種通信方式1.單工通信2.半雙工通信/雙向交替通信3.全雙工通信/雙向同時通信數據傳輸方式串行傳輸并行傳輸同步傳輸異步傳輸二、數據交換方…

計算機網絡(三)數據鏈路層

計算機網絡&#xff08;三&#xff09;數據鏈路層1.基本概念2.功能概述3.組幀字符計數法字符填充法零比特填充法違規編碼法4.差錯控制檢錯編碼奇偶校驗碼CRC循環冗余碼糾錯編碼海明碼流量控制停止等待協議滑動窗口協議后退N幀協議&#xff08;GBN&#xff09;選擇重傳協議5.介質…

libevent網絡編程例子(1)

轉載&#xff1a;http://blog.csdn.net/huangyimo/article/details/46806193 這篇文章介紹下libevent在socket異步編程中的應用。在一些對性能要求較高的網絡應用程序中&#xff0c;為了防止程序阻塞在socket I/O操作上造成程序性能的下降&#xff0c;需要使用異步編程&#xf…

計算機網絡(四)網絡層

計算機網絡&#xff08;四&#xff09;網絡層一、概述和功能TCP/IP協議棧IP數據報格式IP數據報分片二、ipv4網絡地址轉換&#xff08;NAT&#xff09;子網劃分子網掩碼ARP協議&#xff08;地址解析協議&#xff09;DHCP協議ICMP協議二、ipv6ipv4和ipv6的區別IPv6基本地址類型IP…

Linux下基于socket和多線程的聊天室小程序

轉載&#xff1a;http://blog.csdn.net/robot__man/article/details/52460733 要求&#xff1a;基于TCP編寫&#xff0c;一個聊天室最多100人。 客戶端&#xff1a;   1、用戶需要登錄&#xff0c;登錄時只需要輸入一個昵稱即可無需判斷昵稱是否重復&#xff08;如果其他功…

操作系統(一)計算機系統概述

操作系統&#xff08;一&#xff09;計算機系統概述一、操作系統的概念二、功能和目標資源的管理者向上層提供服務對硬件的擴展三、操作系統的特征并發共享虛擬異步四、操作系統的發展與分類手工操作階段批處理階段單道批處理系統多道批處理系統分時操作系統實時操作系統操作系…

Linux下使用socket傳輸文件的C語言簡單實現

轉載&#xff1a;http://blog.csdn.net/ljd_1986413/article/details/7940938 服務器程序和客戶端程序應當分別運行在兩臺計算機上。 在運行服務器端的計算機終端執行&#xff1a;./file_server 在運行客戶端的計算終端上執行&#xff1a;./file_client ipaddr_server 然后根…

操作系統(二)進程管理

ui 操作系統&#xff08;二&#xff09;進程管理一、進程程序和進程進程控制塊&#xff08;PCB&#xff09;進程的組成進程的特征進程的狀態與轉換進程狀態的轉換進程的組織鏈接方式索引方式進程的控制進程的創建進程的終止進程阻塞進程喚醒進程切換進程通信共享存儲消息傳遞管…

gethostbyname()函數說明

轉載&#xff1a;http://www.cnblogs.com/cxz2009/archive/2010/11/19/1881611.html gethostbyname()函數說明——用域名或主機名獲取IP地址 包含頭文件 #include <netdb.h> #include <sys/socket.h> 函數原型 struct hostent *gethostbyna…