相关疑难解决方法(0)

什么是复制和交换习语?

这个成语是什么,什么时候应该使用?它解决了哪些问题?当使用C++ 11时,成语是否会改变?

虽然在许多地方已经提到过,但我们没有任何单一的"它是什么"问题和答案,所以在这里.以下是前面提到的地方的部分列表:

c++ c++-faq copy-constructor assignment-operator copy-and-swap

1907
推荐指数
5
解决办法
34万
查看次数

如何防止GCC内联

GCC概述了一个声明 - 无论我多么努力地阻止它.我试过了

  • -fno-inline
  • -O0
  • __attribute__ ((noinline))
  • dummy asm("")

没有成功!这里的代码:

#include<iostream>

using namespace std;

struct A {
  A() {cout << "A::A()" <<endl; }
  A(const A& a) {cout << "A::A(copy)" <<endl; }
  A& operator=(const A& a) {cout << "A::=()" <<endl; return *this;}
};

A __attribute__ ((noinline)) func() 
{
  cout << "func()" << endl;
  A loc;
  asm("");
  return loc;
}

int main() {
  A a = func();
}
Run Code Online (Sandbox Code Playgroud)

不幸的输出(g ++(Ubuntu/Linaro 4.5.2-8ubuntu4)4.5.2)是

func()
A::A()
Run Code Online (Sandbox Code Playgroud)

声明A a = func(); ??

这个实验的原因是我想知道执行到这个语句时会发生什么(因为我需要控制如何完成):

A a = …
Run Code Online (Sandbox Code Playgroud)

c++ inline variable-assignment

6
推荐指数
2
解决办法
5132
查看次数