37得票2回答
为什么我的析构函数中的异常没有触发std::terminate?

我很清楚在析构函数中不应该抛出任何异常。 但为了更好地掌握这个概念,我编写了以下示例:#include <iostream> class A { private: int i; public: A() { i = 10; } ~A() { thr...

35得票9回答
为什么STL容器没有虚析构函数?

有人知道STL容器为什么没有虚析构函数吗? 据我所知,唯一的好处是: 它通过减少一个指向虚方法表的指针来减小实例的大小,并且 它使销毁和构造稍微快了一点。 缺点是通常的方式下,对容器进行子类化是不安全的。 我的另一个问题可以这样重新表述:“为什么STL容器没有设计允许继承?” 因...

34得票2回答
在Dart中如何在对象销毁之前执行某些操作?

在Java中,我们可以像重写finalize()一样,在C++中,我们可以像~Someclass()一样做一些事情。 但是在Dart中,我该如何做呢?我阅读了https://www.dartlang.org/中的文档,但没有找到答案。

34得票5回答
为什么类的析构函数会被调用两次?

如果这个问题听起来很傻,我向您道歉。我在Stack Overflow关注专家并尝试一些例子,这是其中之一。我确实尝试了搜索选项,但没有找到这种类型的答案。 class A { public: A(){cout<<"A Contruction"<&l...

33得票4回答
为什么std::unique_ptr::reset()总是noexcept?

最近的一个问题(尤其是我的回答)让我想起了一个问题: 在C++11(以及更新的标准)中,析构函数总是隐式地noexcept,除非另有规定(即noexcept(false))。在这种情况下,这些析构函数可能合法地抛出异常。(请注意,这仍然是一种“您应该真正知道自己在做什么”的情况!) 然而,...

32得票13回答
为什么C++默认析构函数不会销毁我的对象?

C++规范说明默认析构函数会删除所有非静态成员。然而,我无法实现这一点。 下面是我的代码:class N { public: ~N() { std::cout << "Destroying object of type N"; } }; clas...

32得票7回答
如何调用类的析构函数?

我有一段简单的C++代码,但是我不知道如何使用析构函数:class date { public: int day; date(int m) { day =m; } ~date(){ cout << "I wish ...

31得票4回答
为什么结构体不能有析构函数?

有关面试中这样的问题,你认为最好的回答是什么? 我认为如果已经有类似的回答,请提供链接。

31得票3回答
构造函数中的“delete this”

当我执行这段代码时,实际上会发生什么?class MyClass { MyClass() { //do something delete this; } }

30得票3回答
为什么获取析构函数的地址是被禁止的?

C++标准12.4.2规定: [...] 析构函数的地址不应被获取。[...] 然而,可以通过一个类析构函数的包装器获取其地址,且编译器不会报错:struct Test { ~Test(){}; void destructor(){ this-&g...