Dar*_*lyn -1 c++ visual-studio move-semantics c++11 visual-studio-2015
我在Visual Studio 2015 v4中尝试此代码.
using namespace std;
void * operator new(size_t size) {
cout << "Creating new " << endl;
void * p = malloc(size);
return p;
}
class CTest {
private:
string a;
string b;
public:
CTest( const string &&one , const string && two ) :a(move(one)), b(move(two)) {}
};
int main() {
CTest("one", "one" );
return 0;
}
Run Code Online (Sandbox Code Playgroud)
此代码在Visual Studio中输出"Creating new"4次,这意味着它分配内存4次.但是遵循语义它应该只分配两次(在数据段中创建2个文字,创建一个和两个函数参数= 2个alloc,然后将它们的资源移动到a和b成员变量)
在g ++下编译它会两次输出"Creating new",就像它应该的那样.
我需要设置任何设置才能使VS遵循移动语义吗?据我所知,它应默认支持.
感谢帮助.
| 归档时间: |
|
| 查看次数: |
60 次 |
| 最近记录: |