小编Sim*_*LIU的帖子

C++ 11 lvalue,rvalue和std :: move()

我有以下代码:

#include <iostream>
using namespace std;
void test(int& a) {
    cout << "lvalue." << endl;
}
void test(int&& a) {
    cout << "rvalue" << endl;
}
int main(int argc, char *argv[]) {
    int a = 1;
    int&& b = 2;
    test(a);
    test(1);
    test(std::move(a));
    test(b);
}
Run Code Online (Sandbox Code Playgroud)

哪个输出:

lvalue.
rvalue
lvalue.
lvalue.
Run Code Online (Sandbox Code Playgroud)

std::move()并且int&&是右值参考,我想知道为什么test(std::move(a))test(b)输出lvalue?它与签名匹配和函数重载有关吗?

c++ rvalue overload-resolution c++11

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

C++中的数组类成员初始化

我有以下代码片段:

#include <iostream>
using namespace std;
class A {
    int* data;
    int size;
public:
    A(int s):size(s)
    {
        data = new int[size];
    }
    A() {
        data = nullptr;
    }
    ~A() {
        if (data) delete [] data;
    }
};
class B {
    A a[2];
public:
    B() {
        a[0] = A(10);
        a[1] = A(11); 
    }
};
int main(int argc, char *argv[]) {
    B b;
}
Run Code Online (Sandbox Code Playgroud)

在上面的C++代码中,我有一个类A,它有一个数组成员int* data,并且(de)内存分配由(de)构造函数处理.在我创建B类,其具有阵列A类固定长度作为一个数据成员的.

我的问题是:如何优雅地初始化会员A …

c++ arrays initialization

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