最近在学习C++,写了段程序,g++下一直不能调用移动构造函数,换到VS2013下就没有问题,原来是需要使用g++编译的时候使用 -fno-elide-constructors 选项,而且开启c++11标准,完整命令如下:
g++ -o demo -std=c++11 -fno-elide-constructors demo.cpp
demo.cpp如下:
#include<iostream>
#include<utility>
#include<string>
using namespace std;
class myClass
{
string *m_ps;
public:
myClass()=default;
myClass(string *ps): m_ps(ps){cout<<"now is in the basic constructor!"<<endl;}
myClass(const myClass &p);
myClass( myClass &&p) noexcept;
~myClass(){
cout<<"now is in the ~myClass"<<endl;
delete m_ps;}
void pri