c++——基本概念
阿新 • • 發佈:2019-03-20
類庫 如果 str stat 才有 表示 參數 自動調用 運算符重載
- 如何理解c/c++中的指針?每種編程語言都使用指針,但Java、c#等將指針隱藏,而c/c++將指針暴露給了用戶(程序員)https://www.cnblogs.com/gxcdream/p/4805612.html
- 如何理解符號表?記錄變量名及變量對應的地址。在編譯時生成,生成後不可改
- c++中的內存有哪幾種?如何分配?存儲什麽內容?靜態存儲區、棧存儲區、堆存儲區。靜態存儲區在編譯時分配,在程序的整個運行期間都存在,存儲全局變量、static變量;棧區函數執行時分配,在函數運行期間存在,存儲函數中的臨時變量;堆區由程序員自己分配,自己刪除
- 棧內存和堆內存的區別?棧內存保存堆內存的地址,堆內存保存真正數據
- 內存中供用戶使用的存儲空間劃分為哪幾部分,分別存儲什麽類型的變量?程序區、靜態存儲區(全局變量)、動態存儲區(函數形參、自動變量等)
- 成員變量(Fields)、參數(parameter)和本地變量(Local Variable)的區別?參數和本地變量相同,存儲在棧中。成員變量在類中定義,本地變量在函數中定義。作用域:成員變量在類的所有函數中都可直接用,本地變量在本函數中使用;生命周期:成員變量在對象的生成期中永遠存在,本地變量隨函數存在。(成員變量在類的每個對象中,一般為私有,不能通過.訪問)
- 變量和函數在聲明時的兩個屬性是什麽?數據類型(整型、字符型),數據存儲類別(在內存中存儲方式,分靜態、動態兩類,根據存儲類別可知變量的作用域與生存期)
- 變量根據生存周期可分為哪兩類?靜態(程序運行期間由系統分配固定的存儲空間)、動態(程序運行期間根據需要動態分配存儲空間)
- 初始化和賦值的區別?初始化指在創建變量時賦予其一個初值,賦值指把對象的當前值擦除,以一個新值代替之
- .h文件和.cpp文件的區別?https://zhidao.baidu.com/question/554429813.html
- c++中作用域如何分隔?以“{}”分隔
- ::是什麽意思?域解析符(也稱作用域運算符或作用域限定符),用來連接類名和函數名,指明當前函數屬於哪個類
- ->的含義?取成員,通過結構體(類)指針取得結構體(類)的成員(可讀成“的”)
- &和*的含義?由上下文決定。在聲明語句中,&為引用,*為指針;在表達式中,&為取地址,*為解引用
- 介紹c++中兩種主要的復合類型及其區別?引用、指針。引用與變量綁定,不是對象(一旦綁定,無法改變),必須初始化(引用是某塊內存的別名,程序不會為引用分配內存);指針指向,是對象(允許賦值、拷貝),可以不初始化(指針指向一塊內存,其內容是所指內存的地址)。
- 指針的使用有何註意事項?未經初始化的指針會引發錯誤,盡量等定義了對象後再定義指向它的指針
- 如何理解c++的分離式編譯機制?將變量的聲明與定義分離的機制。聲明規定了變量的類型和名字,即使一個名字為程序所知,一個文件如果想使用別處定義的名字則必須包含對那個名字的聲明。定義則負責創建與名字關聯的實體,以及申請存儲空間。將聲明和定義分離,可方便將程序分為許多文件,並在文件中共享代碼
- int (*p)(int,int)與int *p(int,int)的區別?前者為函數指針,p是指向函數入口地址的指針變量(地址);後者為指針函數,*表示函數p的返回值是指向整型變量的指針
- int (*p)[4]與int *p[4]的區別?前者為數組指針,p為指向一維數組的指針變量(地址);後者為指針數組,*代表數組p的每個元素均為指向整型變量的指針
- int p[4]與int (*p)[4]中p的區別?前者中p為數組首元素地址;後者中*p為數組首元素地址,p為雙重指針
- 數組名和函數名各代表什麽?數組名代表數組首元素的地址,函數名代表函數的入口地址
- 什麽是虛函數?通過指針調用派生類的成員函數,實現多態
- 句柄和指針的區別?https://blog.csdn.net/perfectguyipeng/article/details/71189822
- 函數的參數傳遞有哪兩種機制?引用傳遞(passed by reference)、值傳遞(passed by value)。形參為引用類型時,形參
- 什麽是函數模板?合並名字相同,參數不同的函數,方便實現函數重載和泛型
- 程序錯誤有哪幾類,如何避免?語法錯誤(編譯)、邏輯錯誤(調試)、運行錯誤(異常機制)
- 創建對象有哪兩種機制,有什麽區別?https://www.cnblogs.com/techyc/p/3257575.html
- 對象的創建包含哪兩個階段?1、分配內存;2、初始化(調用構造函數)
- 多態的實現方式:函數重載、運算符重載、虛函數。前兩種編譯時實現,後一種在運行時實現
- 什麽是宏?一種替換機制(批處理),在預處理階段展開,程序隨之變長
- C/C++的預處理功能有哪幾種?宏定義,文件包含,條件編譯(滿足條件了才編譯)
- 什麽是構造函數?用於對象初始化,創建對象時自動調用,沒有返回值
- 什麽是析構函數?與構造函數相對,銷毀對象時系統自動調用。進行清理工作,例如釋放分配的內存、關閉打開的文件等。沒有參數和返回值
- 什麽是內聯函數,如何聲明?為了消除函數調用的時空開銷,C++ 提供一種提高效率的方法,即在編譯時將函數調用處用函數體替換,類似於C語言中的宏展開。可將短小的、頻繁調用的函數聲明為內聯函數。聲明函數時加關鍵字inline
- 什麽是局部變量和外部變量,如何聲明?static,extern
- 什麽是內部函數和外部函數,如何聲明?二者區別:能否被其他文件調用。內部函數:只能被本文件中的其他函數所調用,即作用域僅局限於所在文件。通過static聲明;外部函數:可被其他文件調用。通過extern聲明(默認)
- 函數的聲明和定義在語法上如何區分?聲明沒有{}
- extern在c++中有什麽用法?(https://www.cnblogs.com/broglie/p/5524932.html)為方便分離式編譯,如果想聲明一個變量而非定義它,就在變量名前添加extern關鍵字。將一個變量聲明為extern就表示承諾在程序的其他位置有該變量的一個非extern定義。一個給定的變量可能有多個extern聲明,但必須只有一個定義
- struct和class的區別?https://www.cnblogs.com/ccsccs/articles/4025215.html
- include" "和< >的區別?前者在.cpp所在目錄找,後者在系統目錄找
- 類的組成?成員變量和成員函數,類不是實體,只有實體才有變量,變量是屬於對象的,不屬於類,函數是屬於類的,不屬於對象。所有類的對象用到的函數是同一個,而類的變量只有創建對象時才會產生。當不同的對象調用同一個函數的時候,編譯器可以知道是哪個對象在調用它,並把變量與之關聯上(通過this實現)
- 創建對象的兩種方式?有什麽區別?在棧上創建和在堆上創建。在棧上創建對象使用“類名 對象名”創建,對象在離開作用域後自動刪除,使用"."訪問對象的的方法;在堆上創建的對象使用“類名 對象地址 = new 類名”創建,對象需使用delete手動刪除,使用"->"訪問對象的方法 https://www.cnblogs.com/techyc/p/3257575.html
- 什麽是對象?一塊能存儲數據並具有某種類型的內存空間
- 基本內置類型包括哪幾類?算數類型(又分為字符、整型、布爾、浮點)和空類型
- 聲明語句的組成?基本數據類型+聲明符
- const的用途?修飾變量,以說明它是不可變的
- 函數由哪幾部分構成?返回類型、函數名字、形參列表、函數體
- 什麽是函數重載?同一作用域內的幾個函數名字相同但形參列表不同
- VS、VC、MFC是什麽?VS >VC >MFC 微軟基礎類庫(Microsoft Foundation Classes)
- 什麽是MSDN?微軟開發者網絡(Microsoft Developer Network),VS的幫助文檔
- 什麽是GDI?圖形裝置界面(Graphic Device Interface)
- 如何理解設備描述表?https://blog.csdn.net/wenzhou1219/article/details/22325247
c++——基本概念