这是一个r值实验,但当gcc向我抱怨缺少move-constructor(我已删除它)并且没有回复到复制构造函数(正如我所料)时,它发生了变异我然后删除了-std =从标志c ++ 11尝试下面看到的,它有很多输出(它最初没有),因为我试图弄清楚为什么它不起作用(我知道如何调试,但我发现stdout上的消息是发生事情的一个很好的指标)
这是我的代码:
#include <iostream>
class Object {
public:
Object() { id=nextId; std::cout << "Creating object: "<<id<<"\n"; nextId++; }
Object(const Object& from) {
id=nextId; std::cout << "Creating object: "<<id<<"\n"; nextId++;
std::cout<<"(Object: "<<id<<" created from Object: "<<from.id<<")\n";
}
Object& operator=(const Object& from) {
std::cout<<"Assigning to "<<id<<" from "<<from.id<<"\n";
return *this;
}
~Object() { std::cout<<"Deconstructing object: "<<id<<"\n";}
private:
static int nextId;
int id;
};
int Object::nextId = 0;
Object test();
int main(int,char**) {
Object a;
std::cout<<"A ought to exist\n";
Object …Run Code Online (Sandbox Code Playgroud) c++ ×1