相关疑难解决方法(0)

什么是复制和交换习语?

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

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

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

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

什么是复制省略和返回值优化?

什么是复制省略?什么是(命名)返回值优化?他们意味着什么?

它们会在什么情况下发生?有什么限制?

c++ optimization c++-faq return-value-optimization copy-elision

350
推荐指数
4
解决办法
7万
查看次数

我们何时必须使用复制构造函数?

我知道C++编译器为类创建了一个复制构造函数.在这种情况下,我们必须编写用户定义的复制构造函数吗?你能举一些例子吗?

c++ copy-constructor

80
推荐指数
4
解决办法
7万
查看次数

复制构造函数和赋值运算符

如果我覆盖operator=,复制构造函数会自动使用new运算符吗?同样,如果我定义了一个拷贝构造函数,会operator=自动"继承"拷贝构造函数的行为吗?

c++ constructor operators copy-constructor assignment-operator

50
推荐指数
3
解决办法
6万
查看次数

在这里调用哪个构造函数?

在这个代码片段中,实际调用了哪个构造函数?

Vector v = getVector(); 
Run Code Online (Sandbox Code Playgroud)

Vector有复制构造函数,默认构造函数和赋值运算符:

class Vector {
public:
    ...
    Vector();
    Vector(const Vector& other);
    Vector& operator=(const Vector& other);
};
Run Code Online (Sandbox Code Playgroud)

getVector按值返回.

Vector getVector();
Run Code Online (Sandbox Code Playgroud)

代码使用C++ 03标准.

代码片段看起来应该调用默认构造函数然后调用赋值运算符,但我怀疑这个声明是使用复制构造函数的另一种形式.哪个是对的?

c++ c++03

7
推荐指数
1
解决办法
203
查看次数

这个简单的C++函数有什么问题?

这是一个来自interiew的问题,以及下面的代码.这个功能有什么问题?

string f() {
    return "hello world";
}
Run Code Online (Sandbox Code Playgroud)

对我来说,没有任何错误,我甚至可以使用此功能运行程序:

#include <iostream>
#include <string>
using namespace std;

string f() {
    return "hello world";
}

int main() {
    string s2=f();
    cout<<s2<<endl;
}
Run Code Online (Sandbox Code Playgroud)

什么错这个功能呢?

c++ function

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

C++在传递值和传递引用函数之间的分配有区别吗?

foo和bar之间有区别吗:

class A
{
  Object __o;

  void foo(Object& o)
  {
    __o = o;  
  }

  void bar(Object o)
  {
    __o = o;
  } 
} 
Run Code Online (Sandbox Code Playgroud)

据我了解,foo在调用对象o时不执行复制操作,并且对赋值执行一次复制操作.Bar在调用对象o时执行一次复制操作,而另一个用于赋值.所以我或多或少会说foo使用的内存比bar少2倍(如果o足够大).那是对的吗 ?

是否有可能编译器优化bar函数以仅对o执行一次复制操作?即使__o指向参数o的本地副本而不是创建新副本?

c++ reference variable-assignment

2
推荐指数
1
解决办法
284
查看次数