相关疑难解决方法(0)

使用"return"语句避免对象的副本

我在C++中有一个非常基本的问题.返回对象时如何避免复制?

这是一个例子:

std::vector<unsigned int> test(const unsigned int n)
{
    std::vector<unsigned int> x;
    for (unsigned int i = 0; i < n; ++i) {
        x.push_back(i);
    }
    return x;
}
Run Code Online (Sandbox Code Playgroud)

据我了解C++是如何工作的,这个函数将创建2个向量:本地一个(x),以及将返回的x的副本.有没有办法避免副本?(我不想返回指向对象的指针,但是对象本身)


使用"移动语义"(在评论中说明)该函数的语法是什么?

c++ copy return object return-value

34
推荐指数
3
解决办法
2万
查看次数

为什么在此代码中未调用复制构造函数

那么为什么不能在“ const Integer operator +(const Integer&rv) ”函数中调用Copy构造函数。是因为RVO。如果是,我需要采取什么措施来防止这种情况发生?

#include <iostream>

using namespace std;

class Integer {
    int i;

public:
    Integer(int ii = 0) : i(ii) {
        cout << "Integer()" << endl;
    }

    Integer(const Integer &I) {
        cout << "Integer(const Integer &)" << endl;
    }

    ~Integer() {
        cout << "~Integer()" << endl;
    }

    const Integer operator+(const Integer &rv) const {
        cout << "operator+" << endl;
        Integer I(i + rv.i);
        I.print();
        return I;
    }

    Integer &operator+=(const Integer &rv) {
        cout << "operator+=" …
Run Code Online (Sandbox Code Playgroud)

c++ copy-constructor

0
推荐指数
1
解决办法
524
查看次数

标签 统计

c++ ×2

copy ×1

copy-constructor ×1

object ×1

return ×1

return-value ×1