gpt4 book ai didi

c++ - 在类中存储引用

转载 作者:行者123 更新时间:2023-11-30 01:08:36 25 4
gpt4 key购买 nike

我想为 vector 重新定义 [] 运算符。我认为实现这一点的最简单方法是创建我自己的类,像这样说(这是一个简化示例):

class MyVec
{
private:
std::vector<double> x; // I don't need a copy in here, it could be a reference
public:
MyVec(const std::vector<double>& y) { x = y; }
double operator[](int i) { return x[i-1]; }
};

现在的问题是我基本上不需要将数据复制到x,我可以存储对它的引用,但据我所知,我不能在类中使用未初始化的引用。尽管如此,也许有某种解决方法可以在不复制数据的情况下工作?

最佳答案

class construction does not allow for this

确实如此,您只需要使用 member initializer list .使用它是从构造函数初始化 class 成员的推荐方法 - 您不应该为此使用构造函数主体。

class MyVec
{
private:
const std::vector<double>& x;
public:
MyVec(const std::vector<double>& y) : x{y} { }
double operator[](int i) { return x[i-1]; }
};

wandbox example


注意,如果在构造函数中取了一个const&,则需要存储一个const&,否则会丢失const -ness 传递的构造函数参数。

关于c++ - 在类中存储引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42132482/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com