gpt4 book ai didi

c++ - 具有公共(public)链接的非 POD 对象 : what's supposed to happen?

转载 作者:太空宇宙 更新时间:2023-11-04 12:00:08 26 4
gpt4 key购买 nike

这里有人在文件范围内写了以下内容:

std::auto_ptr<ClassWithDestructor> an_auto_ptr;

他们打算添加static但忽略了它。

然后,两个不同的 linux 共享库,每个都包含包含此声明的 .o,最终链接到一个可执行文件。

此项目的 auto_ptr::~auto_ptr 运行了两次,造成了不幸的后果。

这是定义的行为、未定义的行为还是 gcc+ld 错误?

最佳答案

这个声明也是一个定义。您对程序中的同一个对象有两个定义。这违反了一个定义规则,因此违反了未定义的行为。

关于c++ - 具有公共(public)链接的非 POD 对象 : what's supposed to happen?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14465244/

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