C++ “的含义~&引用;C+中的(波浪形)符号+;?

C++ “的含义~&引用;C+中的(波浪形)符号+;?,c++,C++,我现在想知道~AirlineTicket()的含义是什么在这个代码中? 我不知道~(tilde)的意思。它是析构函数。 当您销毁(到达作用域的末尾,或调用delete指向对象的指针)对象实例时,会调用它。~引入析构函数。之所以使用它,是因为(a)它是可用的,ad(b)~是“not”的(几种)数学符号之一。~表示它是析构函数,当对象超出范围时,会调用相应的析构函数 何时调用析构函数? 以身作则- // AirlineTicket.h class AirlineTicket { public:

我现在想知道
~AirlineTicket()的含义是什么在这个代码中?
我不知道
~
(tilde)的意思。

它是析构函数。
当您销毁(到达作用域的末尾,或调用
delete
指向对象的指针)对象实例时,会调用它。

~
引入析构函数。之所以使用它,是因为(a)它是可用的,ad(b)
~
是“not”的(几种)数学符号之一。

~
表示它是析构函数,当对象超出范围时,会调用相应的析构函数

何时调用析构函数?

以身作则-

// AirlineTicket.h

class AirlineTicket
{
public:
  AirlineTicket();

  ~AirlineTicket();
     
  int          getNumberOfMiles();
    
private:
  int          mNumberOfMiles;
};
此示例仅用于指示何时调用析构函数。但只有当类管理资源时,才会编写析构函数

类何时管理资源?

Destructor called   0xbfec7942  
Destructor called   0xbfec7943

在程序中,你发布了我不认为有必要编写析构函数。希望有帮助

这表示类的析构函数

~AirlineTicket()
是类AirlineTicket的析构函数

有关更多参考,请参阅


当您删除该类的对象时,会调用析构函数,以释放该对象分配的内存或正在使用的资源。

它是类析构函数。您可能想在C++开发中获取介绍性文本,因为析构函数是面向对象编程中的一个基本概念。有一个很好的参考站点,它是另一个很好的资源。

在您使用它的上下文中,它定义了析构函数

在其他上下文中,如下面的上下文中,它也称为按位求反(补码):

输出:()


或者当自动发生删除时。请注意,
~
也可以在不同的上下文中表示按位。更好的是,检查一下。@Nawaz“在这段代码中,~AirlineTicket();的含义是什么?”的答案不是“按位否定”,而是destructor@Daniel:这不是问题。问题是:C++中的代码> > <代码>的含义是什么?OP在一个上下文中看到了它的用法,我给了他另一个上下文,在这个上下文中,同一个符号的含义完全不同@纳瓦兹,这是一个字面上的问题,我引用提问者的话,他们在问这段代码中的意思,而你的答案没有说明that@Nawaz这不是一个随意发布相关信息的地方,答案应该是针对所问问题的,你的答案不——不管你在解释中加了什么警告+ 1,这个答案在这个页面上是很重要的,或者OP可能已经消失了,认为TLID是他以前从未见过的C++,只是作为析构函数的一部分使用。但事实并非如此。(不过,为了让它成为一个真正体面的答案,你也应该谈谈析构函数。)
Destructor called   0xbfec7942  
Destructor called   0xbfec7943
#include <iostream> 
class foo
{

    int *ptr;

    public:
    foo() ; // Constructor
    ~foo() ;

};

foo:: foo()
{
     ptr = new int ; // ptr is managing resources.
                     // This assignment can be modified to take place in initializer lists too.
}

foo:: ~foo()
{
    std::cout << "Destructor called \t" << this << "\n";
    delete ptr ; // Returning back the resources acquired from the free store.
                 // If this isn't done, program gives memory leaks.
}

int main()
{
    foo *obj = new foo;
    // obj is pointing to resources acquired from free store. Or the object it is pointing to lies on heap. So, we need to explicitly call delete on the pointer object.

    delete obj ;  // Calls the ~foo
    return 0;
}
Destructor called   0x9b68008
int a = ~100;
int b = ~a;
-101
100