我正在玩c ++ 14,我想知道为什么我的赋值运算符从未被调用过.实现似乎是正确的,我禁用了优化(-fno-elide-constructors -O0)这是某种编译器优化我缺少或我的代码有问题?
#include <iostream>
using namespace std;
int num = 0;
#define LOG_LINE(a) cout << "\n" << (++num) << ".)------------------------> " << #a << "\n"
#define LOG_TEXT cout << "called " << __PRETTY_FUNCTION__ << "\n"
struct Klass {
Klass() { LOG_TEXT; }
~Klass() { LOG_TEXT; }
// copy
Klass(const Klass&) { LOG_TEXT; }
Klass& operator=(const Klass&) { LOG_TEXT; return *this; }
// move
Klass(Klass&&) { LOG_TEXT; }
Klass& operator=(Klass&&) { LOG_TEXT; return *this; }
}; …Run Code Online (Sandbox Code Playgroud)