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