- 拷貝構(gòu)造函數(shù)通常用于
當(dāng)用類的一個對象去初始化該類的另一個對象(或引用)時系統(tǒng)自動調(diào)用拷貝構(gòu)造函數(shù)實現(xiàn)拷貝賦值
若函數(shù)的形參為類對象,調(diào)用函數(shù)時,實參賦值給形參,系統(tǒng)自動調(diào)用拷貝構(gòu)造函數(shù)
當(dāng)函數(shù)的返回值是類對象時,系統(tǒng)自動調(diào)用拷貝構(gòu)造函數(shù)
- 必須使用的情況
如果在類中沒有定義拷貝構(gòu)造函數(shù),編譯器會自行定義一個。如果類帶有指針變量,并有動態(tài)內(nèi)存分配,則它必須有一個拷貝構(gòu)造函數(shù)
- 必須使用的情況
Line::Line(const Line &obj){ // &obj是對象line的一個引用,用這個對象的引用來初始化另一個對象
cout << "調(diào)用拷貝構(gòu)造函數(shù),并為指針ptr分配內(nèi)存" << endl;
ptr = new int;
*ptr = *obj.ptr; // 拷貝值
}
- 防止默認(rèn)拷貝的發(fā)生 私有化
4.一邊遍歷一邊刪除vector
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> v;
for(int i = 0; i < 10; i++){
v.push_back(i);
}
auto it = v.begin();
while(it != v.end()){
if(*it == 1){
it = v.erase(it);
}
else it++;
}
for(int i = 0; i < v.size(); i++){
cout << v[i] << endl;
}
return 0;
}
- 單例模式的實現(xiàn)
構(gòu)造函數(shù)私有化 加一個公有函數(shù) getinstance 加鎖
- 單例模式的實現(xiàn)
- vector 隨機(jī)訪問時間復(fù)雜度 O(1) 插入刪除 O(n)
list 隨機(jī)訪問時間復(fù)雜度 O(n) 插入刪除 O(1)
- vector 隨機(jī)訪問時間復(fù)雜度 O(1) 插入刪除 O(n)
- 哈希表的原理
其基本原理是:使用一個下標(biāo)范圍比較大的數(shù)組來存儲元素??梢栽O(shè)計一個函數(shù)(哈希函數(shù),也叫散列函數(shù)),使得每個元素的關(guān)鍵字都與一個函數(shù)值(即數(shù)組下標(biāo),hash值)相對應(yīng),于是用這個數(shù)組單元來存儲這個元素;也可以簡單的理解為,按照關(guān)鍵字為每一個元素“分類”,然后將這個元素存儲在相應(yīng)“類”所對應(yīng)的地方,稱為桶。
但是,這不能夠保證每個元素的關(guān)鍵字與函數(shù)值是一一對應(yīng)的,因此極有可能出現(xiàn)對不不同的元素,卻計算出相同的函數(shù)值,這樣就產(chǎn)生了“沖突”。換句話說,就是把不同的元素分在了相同的“類”中??偟膩碚f,“直接定址”和“解決沖突”是哈希表的兩大特點
- 哈希表的原理
- 多線程下,信號槽分別在什么線程中執(zhí)行,如何控制
可以通過connect的第五個參數(shù)進(jìn)行控制信號槽執(zhí)行時所在的線程
connect有幾種連接方式,直接連接和隊列連接、自動連接
直接連接:信號槽在信號發(fā)出者所在的線程中執(zhí)行
隊列連接:信號在信號發(fā)出者所在的線程中執(zhí)行,槽函數(shù)在信號接收者所在的線程中執(zhí)行
自動連接:多線程時為隊列連接函數(shù),單線程時為直接連接函數(shù)
- 運(yùn)行某些耗時操作如果界面程序很卡 ,你會怎么優(yōu)化
數(shù)據(jù)庫相關(guān)的工作、寫磁盤,網(wǎng)絡(luò)連接
- 運(yùn)行某些耗時操作如果界面程序很卡 ,你會怎么優(yōu)化
- qt哪幾種創(chuàng)建線程的方式
繼承QThread run
繼承object MoveThread
- qt哪幾種創(chuàng)建線程的方式
- 線程同步的方式
互斥鎖 條件變量 讀寫鎖 信號量
- 線程同步的方式
12.線程間共享的資源有
共享的資源有
a. 堆 由于堆是在進(jìn)程空間中開辟出來的,所以它是理所當(dāng)然地被共享的;因此new出來的都是共享的(16位平臺上分全局堆和局部堆,局部堆是獨(dú)享的)
b. 全局變量 它是與具體某一函數(shù)無關(guān)的,所以也與特定線程無關(guān);因此也是共享的
c. 靜態(tài)變量 雖然對于局部變量來說,它在代碼中是“放”在某一函數(shù)中的,但是其存放位置和全局變量一樣,存于堆中開辟的.bss和.data段,是共享的
d. 文件等公用資源 這個是共享的,使用這些公共資源的線程必須同步。Win32 提供了幾種同步資源的方式,包括信號、臨界區(qū)、事件和互斥體。
獨(dú)享的資源有
a. 棧 棧是獨(dú)享的
b. 寄存器