C++面試題及詳細答案100道( 31-40 )

前后端面試題》專欄集合了前后端各個知識模塊的面試題,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs,nodejs,mangoDB,MySQL,Linux… 。

前后端面試題-專欄總目錄

在這里插入圖片描述

文章目錄

  • 一、本文面試題目錄
      • 31. 什么是C++中的模板元編程(TMP)?
      • 32. 解釋C++中的`alignas`和`alignof`操作符。
      • 33. 什么是C++中的初始化列表?
      • 34. 解釋C++中的`decltype`說明符。
      • 35. 什么是C++中的范圍`for`循環?
      • 36. 解釋C++中的`std::initializer_list`。
      • 37. 什么是C++中的`std::move`?
      • 38. 解釋C++中的`std::function`。
      • 39. 什么是C++中的`std::bind`?
      • 40. 解釋C++中的內存對齊的重要性。
  • 二、100道面試題目錄列表

一、本文面試題目錄

31. 什么是C++中的模板元編程(TMP)?

答案
模板元編程利用C++模板在編譯期執行計算,將運行時開銷轉移到編譯期。常見用途:

  1. 編譯期計算(如階乘)。
  2. 類型檢查和轉換。
  3. 代碼生成。

示例代碼

// 編譯期階乘計算
template <int N>
struct Factorial {static constexpr int value = N * Factorial<N-1>::value;
};// 特化終止條件
template <>
struct Factorial<0> {static constexpr int value = 1;
};int main() {constexpr int result = Factorial<5>::value; // 編譯時計算為120
}

32. 解釋C++中的alignasalignof操作符。

答案

  • alignof:返回類型的對齊要求(字節數)。
  • alignas:指定變量或類型的對齊方式。

示例代碼

struct alignas(16) MyStruct { // 強制對齊到16字節邊界char data[10];
};int main() {std::cout << alignof(MyStruct) << std::endl; // 輸出16
}

33. 什么是C++中的初始化列表?

答案
初始化列表用于在構造函數體執行前初始化成員變量,效率更高,特別是對const或引用類型。

示例代碼

class MyClass {
private:int value;const std::string name;
public:// 使用初始化列表MyClass(int val, const std::string& nm) : value(val), name(nm) {}// 錯誤:不能在構造函數體內初始化const成員// MyClass(int val, const std::string& nm) {//     value = val;//     name = nm; // 錯誤// }
};

34. 解釋C++中的decltype說明符。

答案
decltype用于在編譯時推導表達式的類型,常用于模板編程和泛型代碼。

示例代碼

int func() { return 42; }int main() {decltype(func()) x; // x的類型為int(func返回值的類型)int a = 10;int& b = a;decltype(b) c = a; // c的類型為int&(引用類型)
}

35. 什么是C++中的范圍for循環?

答案
范圍for循環(C++11引入)提供簡潔的語法遍歷容器或序列,等價于迭代器遍歷。

示例代碼

#include <vector>int main() {std::vector<int> nums = {1, 2, 3, 4};// 只讀訪問for (int num : nums) {std::cout << num << " ";}// 修改元素(使用引用)for (int& num : nums) {num *= 2;}
}

36. 解釋C++中的std::initializer_list

答案
std::initializer_list允許函數或構造函數接受初始化列表,用于統一的初始化語法。

示例代碼

#include <initializer_list>class MyVector {
private:int* data;size_t size;
public:// 接受初始化列表的構造函數MyVector(std::initializer_list<int> list) : size(list.size()) {data = new int[size];std::copy(list.begin(), list.end(), data);}
};int main() {MyVector vec = {1, 2, 3, 4}; // 使用初始化列表構造
}

37. 什么是C++中的std::move

答案
std::move用于將左值轉換為右值引用,從而觸發移動語義,避免不必要的拷貝。

示例代碼

#include <utility>class MyString {
public:MyString(MyString&& other) noexcept { /* 移動構造函數 */ }
};int main() {MyString a;// MyString b = a; // 拷貝構造MyString c = std::move(a); // 移動構造(a變為有效但未指定狀態)
}

38. 解釋C++中的std::function

答案
std::function是通用多態函數包裝器,可存儲、復制和調用任何可調用對象(函數、lambda、成員函數等)。

示例代碼

#include <functional>int add(int a, int b) { return a + b; }struct Adder {int operator()(int a, int b) const { return a + b; }
};int main() {// 存儲普通函數std::function<int(int, int)> func1 = add;// 存儲lambdastd::function<int(int, int)> func2 = [](int a, int b) { return a + b; };// 存儲函數對象std::function<int(int, int)> func3 = Adder();// 調用int result = func1(1, 2); // 結果為3
}

39. 什么是C++中的std::bind

答案
std::bind用于創建函數對象(綁定器),將可調用對象與其參數綁定,部分應用參數或重排序。

示例代碼

#include <functional>int add(int a, int b) { return a + b; }int main() {// 綁定add函數,固定第一個參數為10auto addTen = std::bind(add, 10, std::placeholders::_1);// 調用綁定的函數int result = addTen(5); // 等價于add(10, 5),結果為15
}

40. 解釋C++中的內存對齊的重要性。

答案
內存對齊要求數據地址是其大小的整數倍,主要影響:

  1. 性能:未對齊的內存訪問可能需要多次讀取。
  2. 兼容性:某些硬件平臺強制要求對齊訪問。
  3. 結構體大小:編譯器可能插入填充字節以滿足對齊要求。

示例代碼

struct Unaligned {char c;     // 1字節int i;      // 4字節(通常對齊到4字節邊界,因此c后填充3字節)
};              // 總大小8字節struct Aligned {int i;      // 4字節char c;     // 1字節char padding[3]; // 手動填充3字節,使總大小為8字節
};int main() {std::cout << sizeof(Unaligned) << std::endl; // 輸出8std::cout << sizeof(Aligned) << std::endl;   // 輸出8
}

二、100道面試題目錄列表

文章序號C++面試題100道
1C++面試題及詳細答案100道(01-10)
2C++面試題及詳細答案100道(11-20)
3C++面試題及詳細答案100道(21-30)
4C++面試題及詳細答案100道(31-40)
5C++面試題及詳細答案100道(41-50)
6C++面試題及詳細答案100道(51-60)
7C++面試題及詳細答案100道(61-70)
8C++面試題及詳細答案100道(71-80)
9C++面試題及詳細答案100道(81-90)
10C++面試題及詳細答案100道(91-100)

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

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

相關文章

給純小白的 Python 操作 Excel 筆記

&#x1f9f0; 1. 先裝工具電腦鍵盤按 Win R&#xff0c;輸入 cmd&#xff0c;回車&#xff0c;把下面一行粘進去回車&#xff0c;等它跑完。 bashpip install openpyxl——————————————————&#x1f6e0;? 2. 打開一個空白的 Excel 打開 Jupyter Notebook…

HTML 常用屬性介紹

目錄 HTML 屬性 HTML 屬性速查表 一、通用屬性&#xff08;所有元素適用&#xff09; 二、鏈接與引用相關屬性 三、表單與輸入控件屬性 四、媒體與多媒體屬性 五、事件屬性&#xff08;常用 JavaScript 事件&#xff09; 六、其他常用屬性 核心通用屬性 id 屬性 cla…

HTML5練習代碼集:學習與實踐核心特性

本文還有配套的精品資源&#xff0c;點擊獲取 簡介&#xff1a;HTML5作為新一代網頁標準&#xff0c;對Web開發提供了更豐富的功能和工具。本練習代碼集專門針對HTML5的核心特性&#xff0c;包括語義化標簽、離線存儲、多媒體支持、圖形繪制等&#xff0c;以及CSS3的3D效果和…

【RH134知識點問答題】第 10 章:控制啟動過程

目錄 1. 請簡要說明 RHEL9 的啟動過程。 2. 系統重啟和關機的命令分別是什么? 3. Systemd target 是什么&#xff1f; 4. 重置丟失的 root 密碼需要哪些步驟&#xff1f; 5. 如何讓系統日志在重啟后持久保留 1. 請簡要說明 RHEL9 的啟動過程。 答&#xff1a;①開機自檢…

Apollo10.0學習之固態雷達與IMU的外參標定

固態雷達&#xff08;如Livox、禾賽等非旋轉式激光雷達&#xff09;與IMU&#xff08;慣性測量單元&#xff09;的外參標定&#xff08;Extrinsic Calibration&#xff09;是自動駕駛、機器人定位&#xff08;如LIO-SAM、FAST-LIO&#xff09;的關鍵步驟。1. 標定原理 外參標定…

HTML5實現古典音樂網站源碼模板1

文章目錄 1.設計來源1.1 網站首頁1.2 古典音樂界面1.3 著名人物界面1.4 古典樂器界面1.5 歷史起源界面 2.效果和源碼2.1 動態效果2.2 源代碼 源碼下載萬套模板&#xff0c;程序開發&#xff0c;在線開發&#xff0c;在線溝通 作者&#xff1a;xcLeigh 文章地址&#xff1a;http…

40 C++ STL模板庫9-容器2-vector

C STL模板庫9-容器2-vector 文章目錄C STL模板庫9-容器2-vector一、基礎概念1. 類型成員&#xff08;Type Members&#xff09;2. 模板參數二、構造函數1. 語法2. 示例三、元素訪問1. 函數說明2. 示例代碼四、容量操作1. 函數說明2. 關鍵點說明3. 關鍵操作解析4. 操作示例五、修…

GPT-5系列文章2——新功能、測試與性能基準全解析

引言 2025年8月&#xff0c;OpenAI正式發布了其新一代旗艦模型GPT-5。與業界此前期待的AGI(人工通用智能)突破不同&#xff0c;GPT-5更像是OpenAI對現有技術的一次深度整合與用戶體驗優化。本文將全面解析GPT-5的新特性、實際測試表現以及官方發布的基準數據&#xff0c;幫助開…

利用cursor+MCP實現瀏覽器自動化釋放雙手

小伙伴們&#xff0c;我們今天利用cursorMCP實現瀏覽器自動化&#xff0c;釋放雙手&#xff0c;工作效率嘎嘎提升&#xff01;前期準備&#xff1a;安裝node.js網址&#xff1a;https://nodejs.org/zh-cn下載下來安裝即可。 下載browser-tools-mcp擴展程序&#xff1a;下載擴展…

指針/邊界索引混淆梳理

在處理數組/鏈表等數據結構時&#xff0c;時常混淆長度和指針序號。處理技巧&#xff1a;使用0-base索引。則區間長度 rightIndex - LeftIndex 1總長度 lastIndex - firstIndex 1鏈表創建一個dummy節點&#xff0c;添加到head前&#xff0c;則可認為從索引0開始。末尾指針判…

LeetCode 刷題【43. 字符串相乘】

43. 字符串相乘 自己做 解1&#xff1a;矩陣計數 class Solution { public:string multiply(string num1, string num2) {int len1 num1.size();int len2 num2.size();if (num1[0] 0 || num2[0] 0) //結果為0的情況return "0";//存儲計算過程的矩陣vector…

NLP數據增強方法及實現-A

目錄 詞替換 主要參考&#xff1a;paddlenlp/data_aug模塊 詞替換數據增強策略也即將句子中的詞隨機替換為其他單詞進行數據增強&#xff0c;這里我們將介紹如何使用paddlenlp.dataaug.WordSubstitute進行詞級別替換的數據增強。 WordSubstitute 參數介紹&#xff1a;aug_ty…

EhViewer安卓ios全版本類下載安裝工具的完整路徑解析

開發一款類似EhViewer的下載安裝工具&#xff08;集下載管理、應用部署等功能于一體&#xff09;&#xff0c;需要經歷從需求錨定到落地發布的系統性流程。以下從需求拆解到技術落地的全維度指南&#xff0c;將幫你理清開發脈絡&#xff0c;避開常見陷阱。安裝 GitHub - huangy…

MySQL 主鍵詳解:作用與使用方法

在 MySQL 數據庫中&#xff0c;主鍵&#xff08;Primary Key&#xff09; 是表結構設計中最重要的約束之一。它不僅是數據唯一性的保障&#xff0c;也是多表關聯、查詢優化的核心工具。本文將從 主鍵的作用 和 主鍵的用法 兩個方面進行講解&#xff0c;并配合代碼示例幫助理解一…

lib.dom.d.ts

lib.dom.d.ts 是一個 TypeScript 類型聲明文件&#xff0c;它是 TypeScript 標準庫的一部分&#xff0c;用于定義瀏覽器 DOM&#xff08;文檔對象模型&#xff09;相關的類型和接口。這個文件為開發者提供了瀏覽器中所有內置的 DOM 類型的定義&#xff0c;包括 localStorage、d…

Spring 工具類:StopWatch

StopWatch 是 Spring 框架提供的一個簡單而強大的計時工具類&#xff0c;用于測量代碼塊的執行時間。它特別適合在開發階段進行性能分析、調試和優化。 基本使用方法 // 創建 StopWatch 實例&#xff08;可指定 ID&#xff09; StopWatch stopWatch new StopWatch("性能分…

解決 VSCode 運行 Python 時 ModuleNotFoundError: No module named ‘open_webui‘ 問題

目錄 1. 問題原因分析 2. 解決思路 3. 解決步驟 3.1 打開或創建 .vscode/launch.json 3.2 添加調試配置 3.3 配置說明 3.4 運行測試 4. 總結 在使用 VSCode 調試 Python 項目時&#xff0c;我們經常會遇到類似下面的錯誤&#xff1a; Exception has occurred: ModuleN…

Python基礎-數據結構

數據結構 Python提供了四種主要的內置數據結構&#xff1a;列表&#xff08;List&#xff09;、元組&#xff08;Tuple&#xff09;、字典&#xff08;Dictionary&#xff09;和集合&#xff08;Set&#xff09;。每種數據結構都有其特定的用途和特性。 Python數據結構概覽&…

NLP學習之Transformer(1)

初識 Transformer &#xff08;1&#xff09; 1.簡介 1.1主要特點&#xff1a; self-attention&#xff1a; 自注意力機制&#xff0c;Transformer的核心是自注意力機制&#xff0c;它允許模型在處理某個位置的輸入時&#xff0c;能夠直接與其他位置的輸入交互&#xff0c;而不…

C語言筆記6:C高級 part1

1.gcc 編譯器 編譯流程 預處理-》編譯》匯編》鏈接》 E 預處理的命令 S 編譯匯編代碼 -c匯編階段命令 -o 輸出對應的文件GDB調試工具2.作用域存儲分類// C高級部分知識多&#xff0c; 加上這周 我學的知識量有點爆炸。家里又有事情&#xff0c;這周末要回老家 爭取下周補齊吧。…