Java面試黃金寶典48

1. C++ 的拷貝構造函數,深拷貝和淺拷貝

 

  • 定義
  1. 拷貝構造函數:在 C++ 里,拷貝構造函數屬于特殊的構造函數,其功能是使用一個已存在的對象來初始化一個新對象。當對象以值傳遞的方式作為參數傳給函數、函數返回對象、用一個對象初始化另一個對象時,拷貝構造函數會被調用。
  2. 淺拷貝:僅復制對象的成員變量值。要是成員變量包含指針,僅僅復制指針的值,也就是兩個對象的指針指向同一塊內存區域。
  3. 深拷貝:不但復制對象的成員變量值,當遇到指針類型的成員變量時,會另外開辟一塊新的內存空間,接著把原指針指向的內容復制到新的內存空間。

淺拷貝實現起來較為簡單,但是存在內存管理方面的風險,例如一個對象銷毀時釋放了內存,另一個對象的指針就會變成野指針。深拷貝能夠避免這種問題,不過實現起來更復雜,需要額外的內存分配和數據復制操作。

  • 要點
  1. 淺拷貝實現簡單,但可能引發內存問題。
  2. 深拷貝能保證對象獨立性,但開銷較大。
  • 應用

在實際開發中,若對象包含動態分配的內存,通常需要使用深拷貝來避免內存錯誤。比如在圖形處理程序里,每個圖形對象可能包含指向圖像數據的指針,使用深拷貝可以確保每個圖形對象有自己獨立的圖像數據副本。

C++ 代碼示例

cpp

#include <iostream>
#include <cstring>class MyClass {
private:char* data;
public:// 構造函數MyClass(const char* str) {data = new char[strlen(str) + 1];strcpy(data, str);}// 淺拷貝構造函數MyClass(const MyClass& other) {data = other.data; // 只復制指針}// 深拷貝構造函數MyClass(const MyClass& other, bool deepCopy) {if (deepCopy) {data = new char[strlen(other.data) + 1];strcpy(data, other.data);} else {data = other.data;}}// 析構函數~MyClass() {delete[] data;}void printData() {std::cout << data << std::endl;}
};int main() {MyClass obj1("Hello");MyClass obj2(obj1, true); // 深拷貝MyClass obj3(obj1);       // 淺拷貝obj1.printData();obj2.printData();obj3.printData();return 0;
}

 

2. 分布式架構中,怎么保證數據的一致性

 

  • 定義

在分布式架構里,數據會分散存儲在多個節點上,由于網絡延遲、節點故障等因素,數據可能出現不一致的情況。保證數據一致性

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

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

相關文章

OpenCV學習之獲取圖像所有點的坐標位置(二)

1.功能介紹 (1)使用openCV解析了.jpeg、.jpg、.png格式的圖像文件,輸出了圖像的寬、高、通道數; (2)創建txt格式文件,保存圖像中各像素點的rgba值。 2.環境介紹 操作系統:window10 開發語言:visual studio 2015 c++ 3.功能實現過程 3.1環境設置 (1)打開Vs2015…

B2B2C多用戶商城平臺 的兩種創新玩法

以前隨便搞個淘寶京東那樣的商城就能躺著賺錢的日子早過去了&#xff01;現在市面上各種電商玩法花樣百出&#xff1a;小紅書那種刷著刷著就下單的"種草"電商&#xff0c;拼多多那種"幫我砍一刀"的社交電商&#xff0c;還有抖音快手那種看著視頻突然就想買…

【Bluedroid】A2DP Sink播放流程源碼分析(二)

接上一篇繼續分析&#xff1a;【Bluedroid】A2DP Sink播放流程源碼分析(一)_安卓a2dp sink播放流程-CSDN博客 AVDTP接收端&#xff08;Sink&#xff09;流事件處理 bta_av_sink_data_cback 是 Bluedroid 中 A2DP Sink 角色的 AVDTP 數據回調函數&#xff0c;負責處理接收端的…

抗量子算法驗證工具

抗量子算法計算工具 抗量子算法驗證工具ML-KEMML-DSASLH-DSA 抗量子算法驗證工具 2024年末&#xff0c;美國NIST陸續公布了FIPS-203、FIPS-204、FIPS-205算法標準文檔&#xff0c;抽空學習了一下&#xff0c;做了個算法計算工具。 ML-KEM ML-DSA SLH-DSA 需要的朋友可留言交流…

2025年PMP考試有哪些變化?難點在哪里?

PMP&#xff08;項目管理專業人士資格認證&#xff09;考試因其廣泛的行業認可度和實用性&#xff0c;成為許多專業人士提升職業競爭力的重要選擇。然而&#xff0c;對于初次接觸PMP考試的考生來說&#xff0c;其廣度與深度的平衡、理論與實踐的結合&#xff0c;以及跨文化思維…

Docker學習筆記-docker安裝、刪除

一、在centOS 7中docker的默認安裝目錄 # Docker 主配置文件目錄 ls /etc/docker# Docker 數據目錄&#xff08;鏡像、容器、卷等&#xff09; ls /var/lib/docker# Docker 可執行文件路徑 which docker # 輸出類似 /usr/bin/docker 二、docker文件目錄說明 目錄/文件用途/…

MATLAB求和∑怎么用?

MATLAB求和∑怎么用&#xff1f; 一&#xff1a;題目&#xff1a;求下列方程的和 二、代碼如下 1.syms函數 &#xff08;方法一) 代碼如下&#xff08;示例&#xff09;&#xff1a; 1. syms x 2. symsum((x.^22*x).^3,1,100) 3. 2.直接用循環 (方法二) 代碼如下&am…

每日算法-鏈表(2.兩數相加、24.兩兩交換鏈表中的節點、143.重排鏈表)

一.兩數相加 1.1題目描述 1.2題解思路 定義兩個指針l1,l2依次遍歷兩個鏈表&#xff0c;用變量add存儲l1加l2的值&#xff0c;將add的個位數取出來充當新節點的值&#xff0c;然后將add的個位數刪去&#xff0c;即add /10&#xff0c;循環此操作。 重點分析&#xff1a; 1.跟…

Flutter學習 滾動組件(1):ListView基本使用

目錄 一、ListView構造方法1.1 常規方法1.2 ListView.builder1.3 ListView.separated 二、自定義ListView樣式和布局&#xff1a;三、ListView性能優化&#xff1a;總結&#xff1a; 一、ListView構造方法 主要以下幾種方法&#xff1a; 常規方法&#xff0c;直接使用默認的構…

ESLint常見錯誤

1、Strings must use singlequote —— 字符串必須使用單引號 2、Extra semicolon semi——額外的分號&#xff1a;一行語句結尾不能添加分號 3、Unexpected trailing comma —— 行尾多了一個逗號 4、Newline required at end of file but not found ——文件結尾必須要新加…

Windows進行磁盤分區/擴容

Windows進行磁盤分區/擴容 導航 文章目錄 Windows進行磁盤分區/擴容導航分區教程壓縮卷教程 用Windows自帶的磁盤管理進行分區/擴容&#xff0c;但有個東西需要說明下是&#xff1a; 物理特性限制 磁盤分區的物理特性決定了擴容操作的方向。在磁盤上&#xff0c;數據是線性存儲…

獲取類路徑

分析 String pathThread.currentThread().getContextClassLoader().getResource("log").getPath(); 這行代碼用于獲取類路徑(classpath)下名為"log"的資源的文件系統路徑&#xff0c;我來詳細解析它的執行過程和潛在問題&#xff1a; 1. 代碼分解解析 j…

安裝fvm可以讓電腦同時管理多個版本的flutter、flutter常用命令、vscode連接模擬器

打開 PowerShellfvm安裝 dart pub global activate fvm安裝完成后&#xff0c;如果顯示FVM無法識別&#xff0c;那么需要去添加環境變量path添加這個&#xff1a;C:\Users\Administrator\AppData\Local\Pub\Cache\bin 常用命令 fvm releases 查看用戶可以裝的flutter版本fvm l…

Kaggle-Disaster Tweets-(二分類+NLP+模型融合)

Disaster Tweets 題意&#xff1a; 就是給出一個dataframe包含text這一列代表著文本&#xff0c;文本會有一些詞&#xff0c;問對于每條記錄中的text是真關于災難的還是假關于災難的。 比如我們說今天作業真多&#xff0c;這真是一場災難。實際上這個災難只是我們調侃而言的。…

Flutter 2025 Roadmap

2025 這個路線圖是有抱負的。它主要代表了我們這些在谷歌工作的人收集的內容。到目前為止&#xff0c;非Google貢獻者的數量超過了谷歌雇傭的貢獻者&#xff0c;所以這并不是一個詳盡的列表&#xff0c;列出了我們希望今年Flutter能夠出現的所有令人興奮的新事物&#xff01;在…

如何通過API接口獲取淘寶商品價格?實操講解

要通過API接口獲取淘寶商品價格&#xff0c;需使用淘寶開放平臺&#xff08;Taobao Open Platform, TOP&#xff09;提供的商品詳情API&#xff08;如taobao.item.get或taobao.item_get&#xff09;。以下是完整的實操步驟&#xff1a; 一、前期準備 注冊淘寶開放平臺賬號 訪問…

按鍵精靈安卓/ios腳本輔助工具開發教程:如何把界面配置保存到服務器

在使用按鍵精靈工具輔助的時候&#xff0c;多配置的情況下&#xff0c;如果保存現有的配置&#xff0c;并且讀取&#xff0c;尤其是游戲中多種任務并行情況下&#xff0c;更是需要界面進行保存&#xff0c;簡單分享來自紫貓插件的配置保存服務器寫法。 界面例子&#xff1a; …

DP34 【模板】前綴和 -- 前綴和

目錄 一&#xff1a;題目 二&#xff1a;算法原理 三&#xff1a;代碼實現 一&#xff1a;題目 題目鏈接&#xff1a;【模板】前綴和_牛客題霸_牛客網 二&#xff1a;算法原理 三&#xff1a;代碼實現 #include <iostream> #include <vector> using namespac…

關于我的服務器

最近我買了臺騰訊云服務器&#xff0c;然后新手小白只會用寶塔。。。 安裝完之后默認的端口是8888&#xff0c;打開面板就會提示我有風險。然后 我改了端口之后&#xff0c;怎么都打不開。 于是 學到了幾句命令可以使用&#xff1a; //查看端口是否已經修改成功 cat www/se…

機器學習常用算法總結

1. 概述 機器學習的定義是對于某類任務T和性能度量P&#xff0c;如果一個計算機程序在T上其性能P隨著經驗E而自我完善&#xff0c;那么我們就稱這個系統從經驗E中學習&#xff0c;機器學習是人工智能的一種方法&#xff0c;它通過在大量數據中學習隱藏的規則&#xff0c;模式和…