gpt4 book ai didi

c++ - const pod 和 std::vector

转载 作者:行者123 更新时间:2023-11-30 02:59:16 25 4
gpt4 key购买 nike

要编译此代码:

std::vector<Foo> factory() 
{
std::vector<Foo> data;
return data;
}

我必须像这样定义我的 POD:

struct Foo
{
const int i;
const int j;

Foo(const int _i, const int _j): i(_i), j(_j) {}

Foo(Foo& foo): i(foo.i), j(foo.j){}

Foo operator=(Foo& foo)
{
Foo f(foo.i, foo.j);
return f;
}
};

如果我不想在创建后更改 Pod 成员,那么这是定义 Pod 的正确方法吗?为什么我必须定义一个复制构造函数并重载赋值运算符?这是否兼容 std::vector 的不同平台实现?你认为这样的 const PODS 是错误的吗?我应该将它们保留为非常量吗?

最佳答案

在无法分配的类型上创建 std::vector 是未定义的行为。您不能为 POD 分配 const 成员。

关于c++ - const pod 和 std::vector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13016065/

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