小编Ste*_*ers的帖子

为什么从未调用我的复制赋值运算符?

我正在玩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)

c++ assignment-operator c++14

4
推荐指数
1
解决办法
384
查看次数

标签 统计

assignment-operator ×1

c++ ×1

c++14 ×1