关于值类和向量的问题 矢量元素必须从C++标准的类23.2.4类模板向量中赋值:
Q1:我假设这是因为以某种方式指定了常量路径,和/或没有定义赋值运算符-为什么默认运算符不起作用?在我的对象上定义const是因为我定义了一个const路径吗?const在这里给我赢得了什么吗 问题2:其次,在这些值对象的向量中,我的对象内存安全吗?(意思是,它们会自动为我删除)。我读到向量在默认情况下被分配到堆中——这是否意味着我需要“删除”任何内容 问题3:第三,为了防止复制整个向量,我必须创建一个将向量作为引用传递的参数,如下所示:关于值类和向量的问题 矢量元素必须从C++标准的类23.2.4类模板向量中赋值:,c++,C++,Q1:我假设这是因为以某种方式指定了常量路径,和/或没有定义赋值运算符-为什么默认运算符不起作用?在我的对象上定义const是因为我定义了一个const路径吗?const在这里给我赢得了什么吗 问题2:其次,在这些值对象的向量中,我的对象内存安全吗?(意思是,它们会自动为我删除)。我读到向量在默认情况下被分配到堆中——这是否意味着我需要“删除”任何内容 问题3:第三,为了防止复制整个向量,我必须创建一个将向量作为引用传递的参数,如下所示: // static FileReference::Que
// static
FileReference::Query(const FileReference& reference, std::vector<FileReference>& files) {
// push stuff into the passed in vector
}
//静态
FileReference::Query(常量FileReference&reference,std::vector&files){
//将内容推入传入向量
}
当函数终止时,返回我不想终止的大型对象的标准是什么。在这里或类似的地方使用共享的ptr会让我受益吗
const
,则无法创建默认赋值运算符;编译器不知道您希望发生什么。您必须编写自己的运算符重载,并找出您想要的行为。(因此,const
成员变量通常没有人们最初想象的那么有用。)std::vector
在其生命周期结束时总是正确地删除其包含的元素,只要它们反过来总是正确地清理自己的资源。在您的例子中,您唯一的成员变量是一个std:string
,它也会照顾自己。所以你完全安全了<>代码>矢量<代码>元素必须从C++标准的类23.2.4类模板向量中赋值: …存储对象应满足可分配的要求 拥有
const
成员会使类不可分配
由于元素是按值存储的,因此当向量被销毁或从向量中删除时,它们将被销毁。如果元素是原始指针,那么它们必须显式地
delete
d.是class FileReference
而不是class File
?另外,类声明缺少一个代码>结尾。谢谢,只是一个简短的提示。谢谢你的链接。真的很有帮助。编译器有着惊人的魔力。