gpt4 book ai didi

c++ - 为什么智能指针模板需要在构造函数中禁用异常抛出

转载 作者:太空宇宙 更新时间:2023-11-03 10:25:59 24 4
gpt4 key购买 nike

我在阅读 C++ primer plus 中的智能指针模板类时发现了这样的问题。书上给出了auto_ptr类是如何实现的例子,像这样,

template<class X> class auto_ptr {
public:
explicit auto_ptr(X* p = 0) throw();
...};

throw() 在构造函数的末尾意味着这个构造函数不会抛出异常。我知道这已被弃用,但我不知道为什么它需要禁用其异常抛出。

最佳答案

throw() 不会禁用异常抛出。它只是说该函数不会抛出任何异常。那是关于构造函数中代码的声明:那里没有任何东西会抛出从构造函数中逃逸的异常。这意味着要么构造函数中的代码不抛出任何异常(例如,int i = 3; 将不会抛出异常),要么任何抛出异常的代码都包含在try block 的 catch 子句不抛出任何东西。

关于c++ - 为什么智能指针模板需要在构造函数中禁用异常抛出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35320086/

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