0
我試圖牢牢把握移動和複製構造函數和作業。爲什麼Visual Studio沒有進入我的賦值操作符?
我有以下簡單的模板類:
template<typename T>
class Box {
public:
// Copy constructor
explicit Box(const T& val) {
value = val;
}
// Move constructor
explicit Box(const T&& val) {
value = val;
}
// Set and get value
void set(T val) { value = val; }
T get() { return value; }
// Copy assignment operator
T& operator=(const T& val) {
value = val;
}
// Move assignment operator
T& operator=(const T&& val) {
value = val;
}
private:
T value;
};
這是使用下面的代碼:
int main() {
Box<int> iBox{ 1 };
int j = 5;
Box<int> jBox{ j };
iBox = jBox;
return 0;
}
我希望,如果我的代碼是正確的,當我踏進iBox = jBox
,我應該進入分配重載之一。爲什麼這不會發生?
查找在調試選項中啓用「只是我的代碼」。或者,禁用優化 – sehe
您是否禁用內聯以進行調試?如果沒有,該函數可能不會被調用,而是在適當的位置執行。 –
@sehe,'工具|選項|調試|常規|啓用只是我的代碼'不起作用。 @king_nak,「項目屬性| C/C++ |優化|內聯函數擴展」沒有任何作用(假設我正在擺弄正確的選項...)並且優化已經關閉(在相同的地方)。 – Steve