日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++笔试复习

發(fā)布時間:2023/11/30 c/c++ 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++笔试复习 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
基礎(chǔ)知識點
  • C++中對象數(shù)組在定義的時候全部進行實例化(與Java不同,Java相當(dāng)于只是定義了一個指針數(shù)組,沒有進行實例化)

  • 程序的三種基本控制結(jié)構(gòu)是:順序結(jié)構(gòu)、循環(huán)結(jié)構(gòu)、選擇結(jié)構(gòu)

  • 一個C++程序開發(fā)步驟通常包括:編輯、編譯、鏈接、運行和調(diào)試

  • 面向?qū)ο蟪绦蛟O(shè)計主要有四個特點:抽象、繼承、多態(tài)、封裝

  • C++中的兩種代碼復(fù)用方式:繼承和模板

  • 類是某一類對象的抽象,對象是類的具體實例,類和對象的關(guān)系是一種數(shù)據(jù)類型與變量的關(guān)系

  • 構(gòu)造函數(shù)的作用是再創(chuàng)建對象的時候初始化對象的數(shù)據(jù)成員

  • 默認(rèn)構(gòu)造函數(shù)有兩種:無參構(gòu)造函數(shù)和所有參數(shù)都有默認(rèn)值的構(gòu)造函數(shù)(兩者不能同時存在)

  • 常對象只能調(diào)用它的常成員函數(shù),不能調(diào)用普通函數(shù)

  • 如果一個類沒有定義默認(rèn)構(gòu)造函數(shù),但是定義了其他構(gòu)造函數(shù)(有參的),編譯器將不會自動生成默認(rèn)構(gòu)造函數(shù)(此時如果派生類中沒有顯式調(diào)用父類的有參構(gòu)造函數(shù)將會編譯出錯)

  • cin是istream類的對象

  • 轉(zhuǎn)換構(gòu)造函數(shù)只有一個參數(shù),可以隱式地將其他類型轉(zhuǎn)換成該類類型。可以用explicit杜絕編譯器的隱式轉(zhuǎn)換。與之對應(yīng)的還有類型轉(zhuǎn)換函數(shù),可以將類類型轉(zhuǎn)換成其他類型。詳見:C++轉(zhuǎn)換構(gòu)造函數(shù)和類型轉(zhuǎn)換函數(shù)

  • 析構(gòu)函數(shù)的作用是提供一個在對象刪除前釋放該對象占用資源的機會

  • 構(gòu)造函數(shù)順序和析構(gòu)函數(shù)相反

  • 構(gòu)造函數(shù)順序:虛基類->普通基類->成員對象->當(dāng)前類詳見:C++派生類含有成員對象構(gòu)造函數(shù)析構(gòu)函數(shù)順序

  • 拷貝構(gòu)造函數(shù)的使用:

    • 復(fù)制對象把它作為參數(shù)傳遞給函數(shù)
    • 復(fù)制對象從函數(shù)返回這個對象
    • 初始化另一個對象(必須是定義的時候,賦值不算)
  • 重載和函數(shù)的返回值沒有關(guān)系,只和函數(shù)名以及函數(shù)參數(shù)列表有關(guān)。派生類中只要函數(shù)名字和基類相同就會重寫。重寫以后我們將無法直接通過派生類對象訪問基類的同名函數(shù),只能通過基類名::顯式訪問

  • 需要注意保護的成員我們也不可以通過對象訪問

  • this指針:在每一個非靜態(tài)成員函數(shù)中都包含一個特殊的指針,這個指針的名字是固定的,稱為this指針。他是指向本類對象的指針,他的值是當(dāng)前被調(diào)用的成員函數(shù)所在對象的起始地址。這樣同一個類創(chuàng)建的多個對象共用同一份成員函數(shù)的拷貝也知道是取哪一個對象的成員數(shù)據(jù)。如果派生類中含有和基類相同名字的成員函數(shù)就會重寫

  • 要實現(xiàn)動態(tài)聯(lián)編一般通過對象指針調(diào)用虛函數(shù)

  • 在C++面向?qū)ο蟪绦蛟O(shè)計框架中是程序的基本組成單位

  • delete只能釋放用new運算符分配的內(nèi)存

  • 靜態(tài)數(shù)據(jù)成員只能在類外定義和初始化,格式為

    數(shù)據(jù)類型 類名::變量名=初值;

    不需要static關(guān)鍵字

  • 編譯器自動生成的拷貝構(gòu)造函數(shù)可能會產(chǎn)生什么問題:當(dāng)對象有指針數(shù)據(jù)成員,并用它初始化同類型的另一個對象時,缺省的拷貝構(gòu)造函數(shù)只能將對象的數(shù)據(jù)成員賦值賦給另一個對象,而布恩那個將該對象中指針?biāo)赶虻膬?nèi)存單元也復(fù)制一份。這樣就可能出現(xiàn)同一內(nèi)存單元釋放兩次,或者傳遞參數(shù)后實參中的地址無效,導(dǎo)致程序運行出錯。

  • 使用虛基類是為了解決多重繼承中的二義性問題

  • 靜態(tài)函數(shù)沒有this指針

  • 描述友元函數(shù)的時候應(yīng)該說明是哪個類的友元函數(shù)

  • 拷貝構(gòu)造函數(shù)同樣是構(gòu)造函數(shù),因此和構(gòu)造函數(shù)的調(diào)用順序一樣,調(diào)用順序為虛基類->基類->成員對象->拷貝構(gòu)造函數(shù)

#include<iostream> #include<string>using namespace std;class A {int val; public:A(){val = 0; cout << "A():" << val << endl;}A(int v){val = v; cout << "A():" << val << endl;} };class B :public A {A obj; public:B(int v1, int v2) :A(v1), obj(v2){cout << "B()" << endl;}B(const B& x){cout << "Copy B()" << endl;} };int main() {B obj1(2, 3);B obj2(obj1); }

運行結(jié)果:

  • 結(jié)構(gòu)化的程序設(shè)計與面向?qū)ο蟮某绦蛟O(shè)計:結(jié)構(gòu)化的程序設(shè)計將數(shù)據(jù)和對數(shù)據(jù)的操作分離,程序是由一個個函數(shù)組成的。面向?qū)ο蟮某绦蛟O(shè)計將數(shù)據(jù)和操作封裝在一起,程序是由一個個對象組成的,對象之間通過接口進行通信,它能夠較好地支持程序代碼的復(fù)用。
  • 類和結(jié)構(gòu)體都是C++中用戶自定義的數(shù)據(jù)類型。
  • 從實現(xiàn)的角度來講,多態(tài)性可以劃分為兩類:靜態(tài)多態(tài)性、動態(tài)多態(tài)性
虛函數(shù)
  • 不能聲明為虛函數(shù)的函數(shù):普通函數(shù)、構(gòu)造函數(shù)、靜態(tài)函數(shù)、內(nèi)聯(lián)成員函數(shù)、友元函數(shù)。成為虛函數(shù)的特點是:可以被重寫/重載,可以在運行時才確定。詳見:C++不能被聲明為虛函數(shù)
  • 虛函數(shù)用于實現(xiàn)動態(tài)多態(tài)性
  • 純虛函數(shù)實在基類中說明的虛函數(shù),它在該基類中沒有定義具體的操作內(nèi)容。含有純虛函數(shù)的類稱為抽象類,抽象類不能被實例化(可以定義指針和引用),必須由他的派生類完成對純虛函數(shù)的定義
友元函數(shù)
  • 友元函數(shù)不是成員函數(shù),破環(huán)隱蔽性,盡量減少使用。友元函數(shù)可以提高程序運行效率,節(jié)約了調(diào)用類成員函數(shù)的開銷
運算符重載
  • 不能進行重載的運算符:.成員訪問運算符.* ->*成員指針訪問運算符::域運算符?:條件運算符#預(yù)處理運算符,詳見:【C++學(xué)習(xí)筆記四】運算符重載
  • 運算符重載以后,要求其保持原來的操作數(shù)個數(shù)、優(yōu)先級、結(jié)合性、語法結(jié)構(gòu)
  • 后綴自增運算符的第一個參數(shù)(如果還有其他參數(shù)的話)必須是int,這樣做是為了區(qū)分前綴和后綴
  • 運算符函數(shù)可以重載為成員函數(shù)、友元函數(shù)和普通函數(shù)。但是有的運算符只能重載為成員函數(shù):= [] () ->
模板
  • 類模板的使用是將上是將類模板實例化成一個類
  • 對于模板類我們只有要用到的時候才會進行實例化:
    • 模板類作為函數(shù)聲明的參數(shù)不會實例化
    • 定義模板類的指針和引用不會實例化
    • 但是如果進行定義時(其他類中含有模板類成員、函數(shù)參數(shù)或者函數(shù)體中含有模板類)以及模板類指針需要訪問成員時都會進行實例化。
    • 需要知道模板類大小的操作都需要進行實例化。如new sizeof運算符等。詳見:C++類模板實例化條件
繼承、基類指針指向派生類對象
  • 私有繼承不允許基類指針指向派生類
    • 基類指針只能訪問到基類中含有的公有成員
    • 當(dāng)用基類指針指向派生類對象在動態(tài)分配堆上內(nèi)存的時候,析構(gòu)函數(shù)必須是虛函數(shù)
      詳見:C++基類指針指向派生類(指針)
流輸入流輸出
  • 重載流插入運算符<< 重載流提取運算符>>
  • cin是istream的對象,cout是ostream的對象
const的用法

可以閱讀這個博客,已經(jīng)將的超級詳細了:傳送門

總結(jié)

以上是生活随笔為你收集整理的C++笔试复习的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。