问题标签 [auto-ptr]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 我相信 Stroustup 的书第三版第 368 页有错字。有人可以确认吗?
我相信从 Stroustup 的书中提取的这段代码片段有一个错字,第 368 页:
不应该
是
反而 ?
c++ - 在向量中存储指向 auto_ptr 的指针
可以将指向 auto_ptr(s) 的指针存储在 std::vector 中吗?安全吗?
我列举了一个读取 XML 文件的文件夹,并使用 auto_ptr 为每个文件夹创建一个对象。我事先不知道会有多少 XML 文件,我想使用一个向量来基本上保留指向它们的指针列表。
我还假设当从向量中删除指针(或向量被销毁)时,指针几乎消失了,所以我不必担心将它们设置为 NULL。
c++ - std::auto_ptr 和 boost::shared_ptr 的语义含义
在我们的大型项目中,我们有很多具有以下内容typedef
的类:
它们的使用非常方便。但我怀疑在auto_ptr
语义上是否接近Ptr
并shared_ptr
与 ref 相同?还是应该auto_ptr
明确使用,因为它具有“所有权转移”语义?
谢谢,
c++ - 从函数中按 C++ 中的值返回 auto_ptr 有效负载
auto_ptr
C++ 标准是否保证在从函数中按值返回有效负载时不会发生崩溃:
根据标准,这里发生了什么:*foo
被复制,然后foo
被销毁,最后return
被执行?还是有另一个步骤顺序?
我用 GCC 测试了这个例子,没有崩溃,但我不确定它是否可以与其他编译器一起使用。
c++ - 关于 `auto_ptr` 模板类,这两个来源之间是否存在矛盾?
该网站在“所有权、来源和汇”上声明:
“当你复制一个auto_ptr
时,你会自动将所有权从源转移auto_ptr
到目标auto_ptr
;如果目标auto_ptr
已经拥有一个对象,则该对象首先被释放。复制后,只有目标auto_ptr
拥有指针并在适当的时候将其删除,而源被设置回空状态,不能再用于引用拥有的对象。”。
现在考虑Stroustrup 的The C++ Programming Language Third Edition的第 14 章第 368 页中operator=()
的定义:templacte<classX> class auto_ptr
auto_ptr& operator=(auto_ptr& a) throw() { ptr = a.ptr; a.ptr = 0; }
我看不到操作员释放由 寻址的对象ptr
,以防万一ptr != 0
!
c++ - 将 auto_ptr 传递给期望对 auto_ptr 进行常量引用的函数有什么危险?
Nicolai Josuttis 在他的《C++ 标准库 - 教程和参考》一书中,在第 44 页写了以下段落:
根据 auto_ptrs 的概念,可以通过使用常量引用将所有权转移到函数中。这是非常危险的,因为人们通常期望当您将对象作为常量引用传递时,它不会被修改。幸运的是,有一个较晚的设计决定使 auto_ptrs 的危险性降低。通过一些棘手的实现技术,使用常量引用是不可能转移所有权的。事实上,你不能改变任何常量 auto_ptr 的所有权:……
如果不可能通过常量引用来更改所有权,为什么上面的“这很危险”和“不太危险”这样的表达方式?
c++ - Auto Pointer Issue
I'm new to C++ and a bit confused regarding auto_ptr.
I have a class which inside has a static auto_ptr.
Util::getDBConnection() implementation :
However when my program finished, it always hit an exception in memory, during the destructor of auto pointer.
The exception is "Unhandled exception at 0x00000001800024e8 in TestDLL.exe: 0xC0000005: Access violation reading location 0xffffffffffffffff."
I understand that auto_ptr will try release any memory when it reach the end of its scope. But, in this case I don't have any idea what goes wrong. Does anyone know what is the possible cause?
c++ - auto_ptr 上的问题
假设,我们有以下代码
我感兴趣:什么是好的,什么是安全的,什么是合法的,什么不是这个代码?据我所知, auto_ptr 是这样的,例如下面的代码
此代码将为第一个 auto_ptr 对象打印一个 NULL 地址,为第二个对象打印一些非 NULL 地址,表明源对象在分配期间丢失了引用 (=)。示例中的原始指针 i 不应被删除,因为它将被拥有该引用的 auto_ptr 删除。事实上,new int 可以直接传递给 x,而无需 i。我如何确定我的代码中的哪一行是安全的,哪一行不是?
c++ - ISO C++ 禁止声明没有类型的“auto_ptr”
我正在尝试编写一个小型应用程序,并且使用 auto_ptr 遇到了编译时错误。
我最初厌倦了用我创建的类创建一个智能指针,但是如果我尝试创建一个 int 类型的智能指针,就会出现同样的错误,所以我肯定做错了其他事情。我正在按照此处给出的示例进行操作。.
我有一种感觉,这个问题的答案会导致我打自己一巴掌。
我在这个文件的底部声明了智能指针。
这是我的课,dose_calac.h。
感激地收到任何帮助或建议。