首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 入門

C++ 基礎面試 100 題精選(第 1-10 題)詳解

     編輯:C++ 入門

前言

本文整理自經典博客《C++基礎知識面試精選100題系列(1-10題)》,針對前十題進行深度解析,幫助讀者掌握 C++ 核心機制。

題目 1:static 與 const 能否同時修飾成員函數?

答案:不能。 const 成員函數隱含 const this* 參數,而 static 成員函數沒有 this 指針,兩者語義衝突。

題目 2:空類、含構造/析構、含虛析構的 sizeof

VS2008 下:sizeof(A)=1、sizeof(B)=1、sizeof(C)=4。虛函數引入虛表指針,導致大小變為指針大小。

題目 3:空指針調用非虛成員函數

若函數內未使用成員變數(如 Print1),調用不會崩潰;若訪問成員(如 Print2),則因解引用空指針而崩潰。

題目 4:空指針調用虛函數

虛函數調用需通過虛表指針,必須解引用 this,因此空指針調用虛函數必崩潰。

題目 5:靜態成員函數能否為虛函數?

不能。靜態函數無 this,虛函數調用依賴實例的虛表指針,兩者矛盾。

題目 6:NULL 指針取成員偏移量

&pPoint->z 僅計算偏移,不訪問內存,輸出 8(假設 int 4 字節,z 為第三個成員)。

題目 7:構造/析構中調用虛函數

構造時調用基類版本,析構時調用當前類版本。輸出順序演示了多態在構造/析構階段的行為差異。

題目 8:C# String 不可變性

ToUpper()、Insert() 返回新字符串,原字符串不變,故輸出仍為 "hello"。

題目 9:C++/C# 中 struct 與 class 的區別

  • C++:默認訪問權限不同(struct public,class private)。
  • C#:struct 為值類型(棧分配),class 為引用類型(堆分配);默認權限均為 private。

題目 10:C# 靜態構造函數執行順序

靜態構造先初始化靜態字段,再執行靜態構造體;實例構造先初始化實例字段,再執行實例構造體。輸出順序為 a1、a3、a2、a4。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved