C++ 常見面試知識點

主要介紹C++常見面試題

1、說一下你理解的C++中的四種智能指針

常用接口
T* get();
T& operator*();
T* operator->();
T& operator=(const T& val);
T* release(); 將 封裝在內部的指針置為nullptr, 但并不會破壞指針所指向的內容, 函
數返回的是內部指針置空之前的值;
void reset (T* ptr = nullptr);直接釋放封裝的內部指針所指向的內存, 如果指定了 ptr 的值, 則將內部指針初始化為該值 (否則將其設置為nullptr)

weak_ptr(弱引?)
解決shared_ptr循環引用導致內存泄漏問題。 2層shared_ptr

2、C++ 中內存分配情況

棧:由編譯器管理分配和回收,存放局部變量和函數參數。
堆:由程序員管理,需要?動 new malloc delete free 進?分配和回收,空間較?,但可能會
出現內存泄漏和空閑碎?的情況。
全局/靜態存儲區:分為初始化和未初始化兩個相鄰區域,存儲初始化和未初始化的全局變量
和靜態變量。
常量存儲區:存儲常量,?般不允許修改。
代碼區:存放程序的?進制代碼。
在這里插入圖片描述

3、C++ 中的指針參數傳遞和引?參數傳遞

指針傳遞是值傳遞
引用是別名,共享內存。傳引?的實質是傳地址,傳遞的是變量的地址。

4、說?下 C++ ?是怎么定義常量的?常量存放在內存的哪個位置?

對于局部常量,存放在棧區;
對于全局常量,編譯期?般不分配內存,放在符號表中以提?訪問效率;
字?值常量,?如字符串,放在常量區。

5、?參數構造函數什么時候生成

?參數構造函數:即默認構造函數,無任何構造函數,編譯器會自動生成。

6、 野指針與懸空指針有什么區別?

野指針(wild pointer):就是沒有被初始化過的指針。
懸空指針:是指針最初指向的內存已經被釋放了的?種指針。

7、 函數傳遞參數的?種?式

值傳遞:形參是實參的拷?,函數內部對形參的操作并不會影響到外部的實參。
指針傳遞:也是值傳遞的?種?式,形參是指向實參地址的指針,當對形參的指向操作時,就
相當于對實參本身進?操作。
引?傳遞:實際上就是把引?對象的地址放在了開辟的棧空間中,函數內部對形參的任何操作
可以直接映射到外部的實參上?。

8、new / delete ,malloc / free 區別

都可以?來在堆上分配和回收空間。new /delete 是操作符,malloc/free 是庫函數。
執? new 實際上執?兩個過程:1.分配未初始化的內存空間(malloc);2.使?對象的構造
函數對空間進?初始化;返回空間的?地址。如果在第?步分配空間中出現問題,則拋出
std::bad_alloc 異常,或被某個設定的異常處理函數捕獲處理;如果在第?步構造對象時出現
異常,則?動調? delete 釋放內存。
執? delete 實際上也有兩個過程:1. 使?析構函數對對象進?析構;2.回收內存空間
(free)。

new 得到的是經過初始化的空間,? malloc 得到的是未初始化的空間。

9、多態分類,有哪幾種

靜態多態,編譯時多態主要通過函數重載和模板實現。
運行時多態主要通過虛函數和繼承實現,其優點是靈活性高,可以在運行時根據實際對象類型來決定調用哪個函數。

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

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

相關文章

AWS API Gateway灰度驗證實現

在微服務架構中,灰度發布(金絲雀發布)是驗證新版本穩定性的核心手段。通過將小部分流量(如 10%)導向新版本服務,可以在不影響整體系統的情況下快速發現問題。AWS API Gateway 原生支持流量按比例分配功能,無需復雜編碼即可實現灰度驗證。本文將詳細解析其實現方法、最佳…

基于coze+微信小程序實現圖片上傳并利用大模型解析

項目截圖&#xff1a; 實現代碼&#xff08;直接搬去可用&#xff09; 前提&#xff1a;需要填寫你的oss配置coze的api授權配置&#xff01;&#xff01;&#xff01; <template><view class"container"><!-- 高斯模糊背景 --><view class&qu…

Spring-boot3.4最新版整合swagger和Mybatis-plus

好家伙,今天終于開始用spring-boot3開始寫項目了&#xff0c;以后要徹底告別1.x和2.x了&#xff0c;同樣的jdk也來到了最低17的要求了,廢話不多說直接開始 這是官方文檔的要求jdk最低是17 maven最低是3.6 一. 構建工程,這一步就不需要給大家解釋了吧 二. 整合Knife4j 1.大于…

jQuery UI API 文檔

jQuery UI API 文檔 引言 jQuery UI 是一個基于 jQuery 的用戶界面庫,它提供了豐富的交互式組件和效果,使得網頁開發變得更加簡單和高效。本文檔旨在為開發者提供全面的 jQuery UI API 信息,幫助您更好地理解和應用 jQuery UI。 jQuery UI 簡介 什么是 jQuery UI? jQu…

java GUI編程實現一個計算器

概述 閑來無事&#xff0c;利用java awt庫寫個簡單的計算器玩玩。 實現 pom.xml <dependencies><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.26</version></dependency&…

C#裝箱拆箱機制詳解

在C#中&#xff0c;裝箱&#xff08;Boxing&#xff09;和拆箱&#xff08;Unboxing&#xff09; 是值類型與引用類型之間轉換的核心機制。它們的實現直接影響程序的性能和類型安全。 一、裝箱&#xff08;Boxing&#xff09; 定義&#xff1a; 將值類型轉換為引用類型&#…

MySQL 8.4 SQL 全攻略:所有知識點與實戰場景

一、引言 MySQL 作為一款廣泛使用的開源關系型數據庫管理系統&#xff0c;在數據存儲和管理領域占據著重要地位。MySQL 8.4 版本在性能、功能和安全性等方面都有了顯著的提升。本文將全面介紹 MySQL 8.4 中 SQL 的各種知識點&#xff0c;并結合實戰場景進行詳細講解&#xff0…

Qt監控系統遠程回放/錄像文件遠程下載/錄像文件打上水印/批量多線程極速下載

一、前言說明 在做這個功能的時候&#xff0c;著實費了點心思&#xff0c;好在之前做ffmpeg加密解密的時候&#xff0c;已經打通了極速加密保存文件&#xff0c;主要就是之前的類中新增了進度提示信號&#xff0c;比如當前已經處理到哪個position位置&#xff0c;發個信號出來…

超高速工業相機的應用

超高速工業相機一般安裝在機器流水線上代替人眼來做測量和判斷&#xff0c;通過數字圖像攝取目標轉換成圖像信號&#xff0c;傳送給專用的圖像處理系統。圖像處理系統對這些信號進行各種運算來抽取目標的特征&#xff0c;進而根據判別的結果來控制現場的設備動作。一般來說&…

Plugin ‘mysql_native_password‘ is not loaded`

Plugin ‘mysql_native_password’ is not loaded mysql_native_password介紹1. 使用默認的認證插件2. 修改 my.cnf 或 my.ini 配置文件3. 加載插件&#xff08;如果確實沒有加載&#xff09;4. 重新安裝或檢查 MySQL 版本 遇到錯誤 ERROR 1524 (HY000): Plugin mysql_nativ…

蒼穹外賣-阿里云OSS文件上傳

蒼穹外賣-阿里云OSS文件上傳 一、阿里云OSS簡介**獲取AccessKey**獲取enpoint 二、代碼實現1 引入依賴2 定義OSS相關配置2.1 application-dev.yml2.2 application.yml 3 讀取OSS配置3.1 AliOssProperties 4 生成OSS工具類對象4.1 AliOssUtil4.2 OssConfiguration2.5 CommonCont…

【工具】前端 js 判斷當前日期是否在當前自然周內

【工具】前端 js 判斷當前日期是否在當前自然周內 function isCurrentNaturalWeek(targetDate) {const today new Date();const dayOfWeek today.getDay(); // 0&#xff08;周日&#xff09;到6&#xff08;周六&#xff09;// 計算本周一的日期&#xff08;自然周從周一開…

【操作系統】處理機調度

處理機調度 一、調度的概念、層次1.1 三個層次1.2 七狀態模型 二、調度算法的評價指標2.1 CPU利用率2.2 系統吞吐率2.3 周轉時間2.4 等待時間2.5 響應時間 三、進程調度&#xff08;低級調度&#xff09;的時機3.1 需要進程調度的情況3.2 不能進程調度的情況3.3 閑逛進程 四、進…

SpringBoot 使用 spring.profiles.active 來區分不同環境配置

很多時候&#xff0c;我們項目在開發環境和生產環境的配置是不一樣的&#xff0c;例如&#xff0c;數據庫配置&#xff0c;在開發的時候&#xff0c;我們一般用測試數據庫&#xff0c;而在生產環境&#xff0c;我們要用生產數據庫&#xff0c;這時候&#xff0c;我們可以利用 p…

怎么進行mysql的優化?

MySQL 的優化是一個系統性的工作&#xff0c;涉及多個層面&#xff0c;包括查詢優化、索引優化、配置優化、架構優化等。以下是一些常見的 MySQL 優化方法&#xff1a; 查詢優化 避免全表掃描&#xff1a;確保查詢能夠使用索引&#xff0c;避免 SELECT *&#xff0c;只選擇需要…

談談 Node.js 中的模塊系統,CommonJS 和 ES Modules 的區別是什么?

Node.js 模塊系統&#xff1a;CommonJS 和 ES Modules 核心差異與實戰指南 一、模塊系統基礎概念 **CommonJS (CJS)**? 是 Node.js 傳統模塊系統&#xff0c;采用同步加載方式&#xff0c;典型特征&#xff1a; // 導出 module.exports { name: cjs }; // 或 exports.nam…

【HarmonyOS Next】 鴻蒙應用useNormalizedOHMUrl詳解

【HarmonyOS Next】 鴻蒙應用useNormalizedOHMUrl詳解 一、useNormalizedOHMUrl是什么? useNormalizedOHMUrl指的是是否使用標準化OHMUrl拼接。 在開發過程中&#xff0c;需要根據不同的環境或配置動態生成 URL。例如&#xff0c;在加載一些遠程模塊或者資源時&#xff0c;…

wav格式的音頻壓縮,WAV 轉 MP3 VBR 體積縮減比為 13.5%、多個 MP3 格式音頻合并為一個、文件夾存在則刪除重建,不存在則直接建立

&#x1f947; 版權: 本文由【墨理學AI】原創首發、各位讀者大大、敬請查閱、感謝三連 &#x1f389; 聲明: 作為全網 AI 領域 干貨最多的博主之一&#xff0c;?? 不負光陰不負卿 ?? 文章目錄 問題一&#xff1a;wav格式的音頻壓縮為哪些格式&#xff0c;網絡傳輸給用戶播放…

MFC線程

創建線程 HANDLE m_hThread; m_hThread CreateThread(NULL, 0, save_snapshot, (LPVOID)this, 0, &iThreadId);開啟線程循環等待 DWORD WINAPI save_snapshot(LPVOID pVoid) {while (true){//持續循環等待事件到達。接收到事件信號后才進入if。if (::WaitForSingleObjec…

賦能農業數字化轉型 雛森科技助力“聚農拼”平臺建設

賦能農業數字化轉型&#xff0c;雛森科技助力“聚農拼”平臺建設 在數字化浪潮席卷各行業的今天&#xff0c;農業領域也在積極探索轉型升級之路。中農集團一直以“根植大地&#xff0c;服務三農”為核心&#xff0c;以“鄉村振興&#xff0c;農民增收”為目標&#xff0c;及時…