English 中文(简体)
在 C++03 自动_ptr 中, 为什么不是编译器生成的抄录器被调用?
原标题:In C++03 auto_ptr why isn t compiler generated copy-ctor called?

我理解C++03中 auto_ptr 是如何工作的。 它基于 < a href=" https://stackoverflow.com/ questions/45114124/how- cant-one- one- implement- stauto- ptrs- copy- constructor/ 4514204# 4514204 > > > > this trick。 当诸如此 < code> auto_int p( auto_int)( new in()) > 的代码被写入时, 此技巧使用用户定义的转换方式将指针从一个对象偷到另一个对象。 但是, 我在这方面提出了几个问题 。

  1. Why isn t the compiler-generated copy-ctor called?
  2. Why does the user-defined conversion take precedence over a compiler-generated copy-ctor?
  3. Is there a compiler-generated copy-ctor to begin with?
  4. If not, what language rule suppresses it?
最佳回答

为什么编译器生成的制版程序没有被调用?

因为该类已经提供了一个复制构件, 一个仍然有效的可变构件, 所以编译器不会生成默认的 。

为什么用户定义的转换优先于编译器生成的制版程序?

没有生成的编译器副本构建器 。

是否有一个编译器生成的复制程序要开始吗?

终于没有了,没有了

如果没有,什么语言规则能抑制它?

它的12.8.2号:

X类的非板块构建器是一个复制构建器,如果其第一个参数是X&、Const X & amp;、挥发性X & amp;或Const 挥发性X& amp;或Const 挥发性X& amp;或者没有其他参数,或者所有其他参数都有默认参数的话。

和12.8.4:

如果类别定义没有明确宣布复制件制造者,则隐含地宣布复制件制造者。

问题回答

暂无回答




相关问题
Non-browser emulation of JavaScript - is it possible?

I have a new project I am working on that involves fetching a webpage, (using PHP and cURL) parsing the HTML and javascript out of it and then handling the data in the results. Basically I hit a ...

CLicking on the camera button in the android emulator

The camera button on the android emulator is disabled. I can t click on it and when I hover with the mouse the background is not blue like in the other buttons. I ve tried to add "camera support - ...

Windows Mobile 6 Emulator change storage?

How do i change the size of the Windows Mobile 6 Emulator. Its fixed at 32mb. I read this post: Increasing Windows Mobile 5 Emulator Storage But it only helps for the 5.0 version. Isnt there any way ...

热门标签